Archivos del escritorioArranque dual con Windows XP y Windows PE 2.0

Wes Miller

Descargar el código de este artículo: Desktop2008_02.exe (151KB)

En entregas anteriores de Archivos del escritorio he mencionado que Windows PE se ha convertido en una herramienta de recuperación y he explicado cómo se puede usar desde una segunda partición. Una consulta que recibí recientemente me hizo pensar que merecería la pena abordar un nuevo giro en este sentido: usar Windows PE 2.0 y Windows XP juntos.

Después de todo, muchos usuarios pueden estar usando Windows® XP durante algún tiempo y Windows PE 2.0 es la versión a la que Microsoft va a ofrecer soporte técnico en adelante (no habrá más actualizaciones para Windows PE 1.x).

Una diferencia importante entre Windows PE 1.x y 2.x reside en que Windows PE 2.x se puede arrancar mediante una interfaz de arranque estándar (a diferencia del método especializado que usa Windows PE 1.x). Aunque Windows PE 1.x ó 2.x se puede arrancar desde una segunda partición, la comodidad de arrancarlo en la misma partición de arranque en la que está instalado el sistema operativo ofrece muchas posibilidades que describiré en breve.

Dos arranques para Windows

Windows NT® siempre ha sido relativamente tolerante al arranque dual. Pero a medida que los equipos basados en Extensible Firmware Interface (EFI) han empezado a reemplazar el viejo BIOS de IBM PC/AT, Microsoft ha cambiado el mecanismo de arranque de Windows para que funcione mejor con EFI y para disponer de un solo mecanismo de arranque en todas las arquitecturas. El nuevo mecanismo de arranque para Windows, que comienza con Windows Vista®, se denomina Base de datos de configuración de arranque o BCD (consulte microsoft.com/whdc/system/platform/firmware/bcd.mspx). Pero tanto si se habla del viejo boot.ini como del nuevo mecanismo BCD, Windows, por lo general, puede arrancar otros sistemas operativos, incluso si eso supone transferir el proceso de arranque a otro cargador de arranque.

Antes de empezar, es fundamental que recuerde que Windows PE 2.0 sólo funciona en sistemas que tienen compatibilidad con Interfaz avanzada de configuración y energía (ACPI, Advanced Configuration and Power Interface) y 384 MB (idealmente 512 MB) de RAM. Tal como indiqué en mi columna de mayo (technetmagazine.com/issues/2007/05/DesktopFiles), los sistemas que no sean ACPI no podrán arrancar Windows PE 2.0 y, como Windows PE 2.0 se debe iniciar desde un disco RAM, debe tener suficiente RAM para dicho disco, cualquier espacio de desecho y todo el espacio de trabajo de RAM. Si su sistema tiene menos de 384 MB de RAM, ni siquiera se plantee esta posibilidad, use Windows PE 1.6 en su lugar. Incluso si se tiene habilidad para reducir el tamaño de Windows PE, no se puede ejecutar correctamente sobre 256 MB.

Problemas que se solucionarán

Veamos ahora los problemas que puede solucionar si arranca Windows PE 2.0 desde la misma partición que Windows XP.

Recuperación del sistema completo Se trata de una tarea que sólo es posible si se arranca Windows PE desde la partición de Windows XP. Dado que Windows PE 2.0 (como Windows PE 1.6 anteriormente) se puede arrancar por completo en un disco RAM, se puede volver a crear la imagen de todo el disco, o usar ImageX para restaurar los archivos de Windows XP, ya que no es necesario volver a crear la imagen de toda la partición.

Si se permite a los usuarios que arranquen Windows PE al inicio, pueden recuperar sus propios sistemas aunque trabajen de forma remota. La imagen podría proceder de una partición secundaria, un recurso compartido de red (si no se trata de usuarios móviles), un DVD o disco duro USB de recuperación o, si se usa ImageX, incluso se puede almacenar en la partición que se va a recuperar. Este tipo de recuperación en disco es una solución excelente para muchos problemas (a excepción de daños físicos en el disco). Evidentemente no resulta interesante restaurar los datos de usuario a menos que se hayan protegido antes y se hayan restaurado como parte de la recuperación. Recuerde que debe usar perfiles móviles y hacer copia de seguridad de los datos del equipo para evitar ese tipo de pérdida. También debe asegurarse de que cualquier mecanismo de recuperación que use puede mitigar la posible pérdida de datos en nombre del usuario (incluida la pérdida debida al restablecimiento de las claves de cifrado EFS).

Recuperación de archivos Windows PE también proporciona el mecanismo para que el sistema esté activo y en funcionamiento incluso si no arranca la instalación principal de Windows. En ese caso, puede arrancar y recuperar los datos de usuario en otro sistema (siempre que disponga de sistemas de copia de seguridad semiactiva disponibles para los usuarios) o en otra ubicación para que el usuario comience a trabajar pronto de nuevo.

Reparación del sistema Finalmente, el arranque de Windows PE en Windows XP permite reparar un sistema mediante la ejecución de un conjunto de scripts de solución de problemas o una aplicación simple de reparación o recuperación controlada por el usuario. El proceso es similar a la recuperación completa del sistema, pero con un ámbito más limitado (y no se pondrán en peligro los datos de usuario).

Ahora que tiene una idea de lo que puede hacer si arranca Windows PE en la partición de Windows XP, consulte lo que pasa entre bastidores para poder aplicar el proceso a cualquier solución que desee.

Antes de Windows Vista

Antes de la llegada de Windows Vista, los sistemas basados en BIOS/registro de arranque maestro (MBR, Master Boot Record) arrancaban del siguiente modo. El BIOS indicaba el dispositivo de arranque (en el caso del disco duro, indicaba el MBR en el disco). El MBR ejecutaba código que especificaba la partición que se iba a arrancar. Tenga en cuenta que es la primera partición que tiene establecida la marca de activa. En las versiones anteriores de diskpart, no se podía dejar inactiva una partición (es decir, no se podía quitar la marca de activa). Se agregó un modificador a diskpart para corregir esta situación. De lo contrario, tenía que ser la primera partición de la tabla de particiones la que tuviera establecida su marca de activa. La partición contiene el sector de arranque, que indica el código que se ejecuta a continuación. De Windows NT a Windows Server® 2003, el código para ejecutar se encuentra en un archivo denominado ntldr, sin extensión de archivo. Si alguna vez ha formateado un disco, no ha instalado Windows y ha intentado arrancar, habrá visto el mensaje de error "No se encuentra NTLDR".

Le interesará saber que ntldr es totalmente compatible con versiones anteriores pero, como es lógico, no lo es con versiones posteriores. Esto significa que el archivo ntldr de Windows XP puede arrancar Windows 2000, pero no a la inversa. De ahí que siempre sea importante instalar primero el sistema operativo más antiguo si planea realizar el arranque dual. Como ntldr no tiene asociado ningún número de versión, es más importante, si cabe, mantenerlo así.

Ntldr es una aplicación de modo real (16 bits) que inicia NTDetect.com, que realiza la detección de dispositivos básicos y, a continuación, inicia el kernel, ntoskrnl.exe (puede ser uno de varios archivos, siempre con el nombre cambiado a ntoskrnl.exe). El kernel es el componente fundamental en el proceso de arranque de Windows.

Este resumen del proceso de arranque es bastante simplista y he omitido la inicialización entera de Win32®, pero no es relevante para esta explicación. Si desea obtener más información al respecto, le recomiendo que lea Windows Internals, cuarta edición por Mark Russinovich y David Solomon (Microsoft Press®, 2004).

Otro aspecto que se debe tener en cuenta es que cuando se arranca desde CD, el programa de instalación de Windows y Windows PE ejecutan setupldr.bin en vez de ntldr. Este archivo contiene realmente un código de arranque algo distinto para poder arrancar desde el CD (lo que no puede hacer ntldr). Por este motivo, para arrancar Windows PE 1.x, se cambia el nombre de setupldr.bin por ntldr y se coloca en el disco. También es el motivo por el que dicho archivo no puede cargar después un archivo boot.ini (porque setupldr.bin se diseñó sólo para el arranque desde CD y, por lo tanto, no se consideró que boot.ini fuera necesario).

Windows Vista y más allá

Windows Vista cambió muchos elementos de este proceso. Windows Server 2008 lo cambia aún más al habilitar IA32 (compatibilidad con 32 bits) para arrancar desde EFI, algo que no había sido posible hasta la fecha aparte de los sistemas con Itanium. Para los sistemas basados en BIOS, los pasos iniciales del proceso de arranque apenas han cambiado. La diferencia clave es que BOOTMGR es el cargador de arranque que se inicializa y, a continuación, lleva a cabo los siguientes pasos.

Busca en el directorio de arranque el archivo BCD, que es, de hecho, su propio subárbol del Registro. El archivo BCD contiene las entradas de arranque (incluidos los valores predeterminados) para arrancar. Consulte en la Figura 1 los tipos de imagen (tipos de archivo ejecutable) y en la Figura 2 los tipos de aplicación específicos que se inician. Una o varias de estas entradas pueden ser una referencia a ntldr. Sólo una de ellas puede hacer referencia realmente al GUID conocido que se usa para cargar ntldr (consulte la quinta fila de la Figura 3). A continuación, bootmgr decide la entrada que se cargará a continuación, en función de si el sistema está arrancando, ha hibernado o arranca en ntldr u otro administrador de arranque (en cuyo caso indicará otro sector de arranque e iniciará dicho cargador). Esto sería lo más habitual en el caso de arranque dual con un sistema operativo que no sea Windows. Puede encontrar más información en microsoft.com/whdc/system/platform/firmware/bcd.mspx.

Figure 3 Objetos de aplicación estándar

Descripción Identificador de BCDEdit GUID
Administrador de arranque de Windows {bootmgr} 9dea862c-5cdd-4e70-acc1-f32b344d4795
Administrador de arranque de firmware {fwbootmgr} a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba
Comprobador de memoria de Windows {memdiag} b2721d73-1db4-4c62-bf78-c548a880142d
Aplicación de reanudación de Windows Ningún alias 147aa509-0358-4473-b83b-d950dda00615
Cargador heredado de Windows {ntldr} 466f5a88-0af2-4f76-9038-095b170dc21c
Entrada de arranque actual {current} fa926493-6f1c-4193-a414-58f0b2456d1e
Entrada de arranque predeterminada {default} ningún GUID predefinido
     

Figure 2 Tipos de aplicación

Descripción Valor Descripción
Administrador de arranque de firmware 0x1 Sólo se aplica a sistemas EFI.
Administrador de arranque de Windows 0x2 Controla el flujo de arranque. En un sistema de arranque dual, muestra un menú de selección de arranque al usuario.
Cargador de arranque de Windows 0x3 Carga una determinada versión o configuración de Windows.
Aplicación de reanudación de Windows 0x4 Restaura Windows a su estado de ejecución cuando el equipo se reanuda desde el modo de hibernación
Comprobador de memoria de Windows 0x5 Aplicación de diagnóstico de memoria.
Ntldr 0x6 Sólo se aplica a sistemas BIOS de PC/AT. Carga versiones de Windows anteriores a Windows Vista.
Sector de arranque 0x8 Aplicación de modo real de 16 bits. Sólo se aplica a sistemas BIOS de PC/AT. Se puede usar para reiniciar el proceso de arranque y cargar un sistema operativo que no sea Windows.
     

Figure 1 Tipos de imagen

Descripción Valor
Aplicación de firmware 0x1
Aplicación de arranque 0x2
Objeto de cargador basado en ntldr 0x3
Aplicación de modo real 0x4
   

Observará que la renovada estructura de arranque de Windows Vista está mucho más organizada que en versiones anteriores. Aparte de bootmgr, todo el código de arranque se encuentra en el directorio \boot en el nivel de raíz y se transfiere a los binarios específicos de Windows después de que así lo haya especificado BCD.

Arranque de Windows XP y Windows PE 2.0

Probablemente ahora empiece a ver cómo Windows PE, usando el administrador de arranque de Windows Vista, puede actuar como un intermediario que permita continuar el arranque de Windows XP o de versiones anteriores de Windows, a la vez que se agrega Windows PE 2.0 al conjunto de una herramienta de recuperación integrada.

Evidentemente va a agregar otro paso al proceso de arranque, pero es un paso que Microsoft ha diseñado. Con la idea de que la nueva infraestructura de bootmgr debía ser compatible con el archivo ntldr y otros administradores de arranque de terceros existentes, bootmgr se diseñó para admitir dichas soluciones.

Ahora que hemos examinado cómo arranca Windows y cómo funciona el nuevo BCD, ¿cómo los relacionamos los dos y colocamos Windows PE 2.0 en nuestra instalación de Windows XP existente? Hay dos formas de dejar de lado el sector de arranque de Windows Vista, el elemento de código de arranque que indica al sistema que inicie bootmgr. Una de ellas es usar diskpart y crear y formatear una nueva partición con Windows PE 2.0. Pero aquí no es posible, ya que se dispone de una instalación de Windows XP existente que no se desea dañar ni mover. En su lugar, siga este proceso:

  1. Asegúrese de que dispone de una copia de bootsect.exe y bcdedit.exe en el CD de arranque de Windows PE 2.0 (ambos se pueden encontrar en el DVD de instalación de Windows Vista).
  2. Arranque el sistema de Windows XP en el CD de Windows PE 2.0.
  3. Después del arranque, ejecute este comando:
    bootsect.exe /NT60 ALL

De este modo el sector de arranque se establecerá como el sector de arranque compatible con Windows Vista que sabe cómo iniciar bootmgr.

4. Copie el administrador de arranque en el disco duro:

    xcopy BOOTMGR C:\BOOTMGR /I

5. Copie el archivo boot.SDI en el directorio \BOOT del disco duro. Deberá hacer una copia del mismo antes del arranque, ya que estará bloqueado y no se podrá copiar mientras se ejecuta Windows PE:

    xcopy BOOT.SDI C:\BOOT\ 

Corrija la ruta de acceso del origen en consecuencia.

6. Copie boot.WIM en el disco duro. Al igual que SDI, deberá disponer de una copia secundaria. No podrá copiar el archivo que se está ejecutando:

    xcopy BOOT.WIM C:\BOOT\BOOT.WIM 

Corrija la ruta de acceso del origen en consecuencia.

7. Ahora cree un nuevo almacén BCD:

    bcdedit /createstore

8. A continuación, cree las entradas de BCD para cargar Windows PE:

    bcdedit /create {ramdiskoptions} /d "Boot Windows PE"
    bcdedit /set {ramdiskoptions} ramdisksdidevice partition=c:
    bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
    bcdedit /create /d "Windows PE" /application OSLOADER

9. La última línea devolverá un GUID. Reemplace {YOURGUID} por el GUID real que se ha devuelto. En la Figura 4 se muestran las entradas del disco RAM que arrancan Windows PE desde el disco duro.

Figure 4 Entradas en el disco RAM que arrancan Windows PE desde el disco duro

bcdedit /set {YOURGUID} device ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
bcdedit /set{YOURGUID} path \windows\system32\winload.exe
bcdedit /{YOURGUID} osdeviceramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
bcdedit /set{YOURGUID} systemroot \windows
bcdedit /set{YOURGUID} winpe yes
bcdedit /set {YOURGUID} detecthal yes

10. Ahora cree las entradas de bootmgr para que se inicie el administrador de arranque:

    bcdedit /create {bootmgr} /d "Boot Manager"
    bcdedit /set {bootmgr} device boot

11. Finalmente, configure una entrada BCD para la instalación de Windows existente (cambie el texto de presentación de Windows XP por otro que desee mostrar en el menú del administrador de arranque). El último comando también la establece como la primera entrada (predeterminada) del menú de arranque:

    bcdedit /create {ntldr} /d "Windows XP"
    bcdedit /set {ntldr} device partition=C:
    bcdedit /set {ntldr} path \ntldr
    bcdedit /displayorder {ntldr} /addfirst

12. Ahora debe poder reiniciar el sistema e iniciar la instalación anterior de Windows o Windows PE 2.0 si selecciona la entrada adecuada del menú de arranque. En la Figura 5 se muestra el resultado de ejemplo de bcdedit /enum all. Este comando enumera todas las entradas de BCD después de haberlas agregado (en Windows PE 1.6).

Entrada de ejemplo

Entrada de ejemplo  (Hacer clic en la imagen para ampliarla)

He estado trabajando en un script que pueda realizar esta tarea automáticamente. Actualmente sólo puede copiar los archivos de arranque en el disco duro y configurar las entradas de BCD. No puede establecer que el sector de arranque sea el nuevo valor de Windows Server 2008 mientras se ejecuta Windows (se tiene que realizar sin conexión, en Windows PE). Puede encontrar el script en la sección de descargas del sitio web de TechNet Magazine en technetmagazine.com. Para ejecutar el script, tenga los siguientes elementos en el mismo directorio que el archivo VBScript que se está ejecutando:

  1. BCDEdit
  2. BOOTMGR
  3. Un directorio \BOOT\ (del medio de Windows Vista o Windows PE 2.0)
  4. Un directorio \SOURCES\ con un archivo BOOT.WIM de Windows PE 2.0 válido y desde el que se pueda arrancar

Creará el archivo BCD y copiará los archivos de arranque adecuados. Después de arrancar Windows PE y ejecutar bootsect, debe poder realizar el arranque dual.

Deshacer el arranque dual

Deshacer el arranque dual es mucho más sencillo que aplicarlo. Sólo debe restaurar el sector de arranque al anterior de Windows Vista mediante la ejecución del siguiente comando:

bootsect.exe /NT52 ALL

Una vez restaurado, puede eliminar bootmgr y el directorio \boot. En el reinicio siguiente, el sector de arranque forzará el inicio de ntldr y se quitarán por completo Windows PE 2.0 y todos los binarios de arranque de Windows Vista del flujo de arranque.

Wes Miller es director de productos técnicos de Initiate Systems (InitiateSystems.com) en Austin, Texas. Anteriormente, trabajó en Winternals Software y en Microsoft como administrador de programas. Si lo desea, puede ponerse en contacto con Wes en la dirección technet@getwired.com.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.