Archivos del escritorioGuía del usuario avanzado para WIM e ImageX

Wes Miller

Este artículo se basa en una versión de preliminar del Kit de instalación automatizada de Windows (WAIK) y Windows Server 2008. Por tanto, toda la información de este documento está sujeta a cambios.

En varios de mis artículos anteriores he escrito sobre ImageX y el formato de imagen de Windows (WIM). Hace algunos meses, en Tech•Ed escuché algunos de los comentarios y preguntas de los profesionales de TI que comenzaban a usar los Servicios de implementación de Windows (WDS), ImageX y el Kit de instalación automatizada de Windows (WAIK) y constaté

que había que los usuarios necesitaban más información. De modo que en el artículo de este mes me gustaría centrarme en ImageX y el formato WIM, y en cómo sacar el máximo provecho de éstos. Juntos, ImageX y WIM le permiten implementar fácilmente no sólo Windows Vista® y Windows Server® 2008, sino además Windows® XP, Windows Server 2003 y Windows 2000.

Cambios en WAIK

El próxima versión de Windows Server 2008 quizás le haga preguntarse qué esto para WAIK. Microsoft planea lanzar al mercado una versión actualizada del WAIK en el mismo período que la versión Windows Server 2008. No hay cambios considerables en el formato WIM (la herramienta ImageX y el formato permanecen sin cambios); tampoco cambia WDS para Windows Server 2003. Al contrario de lo que dicen los rumores, la multidifusión no estará disponible en WDS de Windows Server 2003; sólo los servidores de WDS que ejecutan Windows Server 2008 tendrán la nueva capacidad de implementación de multidifusión para WDS.

Windows PE 2.0 y la instalación de Windows se revisarán para que sean compatibles con:

  • Implementación de Windows Server 2008 y Windows Vista.
  • Implementación de multidifusión mediante WDS desde un servidor WDS de Windows Server 2008.
  • Implementación de versiones x64, así como de versiones x86 de Windows Vista y Windows Server 2008 desde Windows PE x86.

En primer lugar, esto significa que Windows PE 2.0 podrá implementar Windows Server 2008 tan fácilmente como lo hace con Windows Vista; las mismas herramientas y procesos funcionan igual tanto en uno como en el otro. En segundo lugar, podrá usar la implementación de multidifusión mediante WDS una vez que sus servidores WDS se ejecuten en Windows Server 2008. Por último, esto significa que tendrá la capacidad de usar un disco de Windows PE 2 .0 x86 e implementar desde dicho disco una imagen x86 o x64 de Windows.

Mencioné este último punto en Tech•Ed en mi sesión sobre Windows x64. Desafortunadamente, ha habido alguna confusión en torno a este punto en los blogs y en la comunidad técnica de Windows. Esto no significa que Microsoft distribuirá Windows x64 y Windows x86 en cada DVD de Windows Vista o Windows Server 2008. Tampoco significa que debe combinar las imágenes de Windows x64 y Windows x86 en un único archivo WIM (aunque puede hacerlo). Al hacerlo de este modo no se ahorra el espacio de almacenamiento que se consigue ahorrar con una instancia única, pero WIM puede viajar en un único archivo.

Esto significa que los clientes de empresa y los OEM que dedicaron varios años al desarrollo de procesos de implementación basados en x86 (y scripts y herramientas personalizadas) ahora podrán implementar Windows x86 o x64 en WIM mediante una instalación de 32 bits, algo que los clientes corporativos vienen solicitando desde que se presentó Windows x64 en 2005.

ImageX en el día a día

Uso de /mount, /mountrw y /delete

A continuación se ofrecen algunas sugerencias muy útiles para usar los modificadores de comandos /mount, /mountrw y /delete con ImageX:

  • Monte un volumen con /mountrw si piensa editarlo.
  • Debe montar WIM en un directorio vacío, simplemente para eliminar la confusión de cualquier archivo almacenado allí y evitar que ImageX genere mensajes de advertencia innecesarios.
  • No olvide hacer usar /unmount /commit en su imagen de lectura/escritura si desea guardar los cambios realizados. En mi caso, frecuentemente realizaba cambios y más tarde olvidaba confirmarlos (por lo que los perdía).
  • La eliminación de archivos con /mountrw y la eliminación de imágenes de volumen con /delete no recupera ningún espacio; en realidad, puede incluso llegar a ocupar más espacio. Consulte en este artículo la sección sobre /export para obtener información más detallada.
  • Sólo se puede montar un único archivo WIM una vez para acceso de lectura/escritura. Dos usuarios no pueden editar el mismo WIM a la vez, y no se pueden editar dos imágenes de volumen a la vez.
  • Aún en modo de sólo lectura (/mount), se debe limitar el número de imágenes de volumen que se montan de manera simultánea, porque el controlador depende de la cantidad de memoria de bloque no paginado de Windows disponible en el sistema para cada imagen montada. El resultado es un límite que puede variar en función del sistema (o de la arquitectura del sistema). Mi sugerencia es no probar con más de cinco imágenes de manera simultánea.
  • Las ediciones importantes a través de /mountrw prácticamente no consumen nada de tiempo cuando se realizan los cambios, pero pueden provocar que /commit necesite mucho tiempo, y que se deberán comprimir y almacenar los nuevos datos del archivo.
  • Use /delete y /mountrw con cuidado ya que, una vez que se confirman los cambios, no se pueden deshacer.
  • Cuando en un archivo WIM sólo existe una imagen de volumen, no se puede ejecutar /delete (en su lugar, elimine la totalidad del archivo WIM o anexe otra imagen de volumen).
  • Para obtener rápidamente un árbol de directorios del contenido de una imagen de volumen, en lugar de /mount use el comando siguiente:
ImageX /dir <path_to_wim_file> <image index>
  • Si edita dos archivos WIM al mismo tiempo, intente no usar /unmount en los dos a la vez; ejecute los eventos mount/unmount de forma secuencial para que no se bloqueen entre sí.

ImageX se diseñó específicamente para reflejar la manera en que los clientes OEM y de empresa afirman que usan las herramientas. La figura 1 muestra este proceso.

Figura 1 Uso de ImageX

Figura 1** Uso de ImageX **

Hay que señalar que el paso cinco es crítico: la realidad es que una imagen cambia constantemente. Por lo tanto, la captura y modificación de la imagen necesita ser lo más rápida y fácil posible.

Con esa finalidad, puede anexar una imagen adicional (mediante el modificador de comandos /append) a una imagen ya creada. Inicialmente, el equipo de desarrollo pensó que desearía agregar un SKU adicional (una versión de Windows) a su imagen anterior, pero cuanto más trabajaba con los clientes corporativos en los comienzos del desarrollo de Windows Vista, más escuchaba que se estaba usando para implementar rápidamente X, y después volver a capturar X1, donde había realizado alguna de las modificaciones del paso 2. Esto permitía volver a capturar la imagen con rapidez, dado que sólo se modificaba un número limitado de archivos.

Cuando el equipo lo comprendió, se dio cuenta de que quizás no tenía sentido mantener la imagen original en todas las situaciones. Un poco más adelante explicaré el modificador de comandos /export que se agregó específicamente debido a este escenario y el siguiente.

El cambio es constante

Desde el principio, el equipo de desarrollo decidió que los archivos WIM pudieran editarse. Como ya habían decidido que un formato de procesamiento de imágenes basado en sectores no funcionaría (consulte el artículo de diciembre 2006 en technetmagazine.com/issues/2006/12/DesktopFiles si desea ver una explicación), los miembros del equipo tenían que entregar una solución que lograra montar con facilidad los archivos de forma nativa, como una parte del sistema de archivos de Windows, y realizar cambios en las imágenes de volumen montadas en el archivo WIM. Esto significaba que existirían algunas "partes móviles" más, como me gusta denominarlas. Montar una imagen basada en sectores es relativamente fácil, pero montar un formato de archivo propietario como WIM requería algunas herramientas muy específicas.

El formato necesitaba acceso desde el indicador de comandos, y excluir Windows Shell Extensions que se usa con frecuencia para administrar los archivos ZIP y CAB de forma nativa. Desafortunadamente, estos controladores sólo permiten un acceso abstracto del Explorador de Windows a un objeto.

Como resultado, la solución WIM implica un controlador (wimfltr.sys) e ImageX, que sirve como método para en realidad cargar el controlador y administrar la interfaz para montar el WIM. El controlador sirve para agregar una abstracción al sistema de archivos de Windows, como se muestra en la figura 2. Cada vez que ejecuta un comando como éstos, le indica a ImageX que debe cargar el controlador wimfltr.sys y hacer que el controlador superponga la primera imagen de volumen (la imagen 1 en los comandos usados aquí) en el montaje de directorio vacío, como puede verse a continuación:

Figura 2 Montaje de una imagen de volumen WIM

Figura 2** Montaje de una imagen de volumen WIM **(Hacer clic en la imagen para ampliarla)

ImageX /mount iso\sources\boot.wim 1 mount 
ImageX /mountrw iso\sources\boot.wim 1 mount 

Este es el comportamiento predeterminado en WAIK. Por lo tanto, si explora o genera una lista de directorios en el directorio de montaje, puede ver la raíz de la imagen de volumen 1 en boot.wim. Por supuesto, el uso de /mountrw o /mount determinará si este directorio es de lectura/escritura o de sólo lectura (consulte la barra lateral "Uso de /mount, /mountrw y /delete" para obtener más información).

La capacidad de /mountrw se diseñó e en principio para agregar con facilidad controladores u otros archivos o contenido que se copian con xcopy, configurar archivos de respuesta o modificar el registro sin conexión de un archivo de WIM montado para modificarlo según sea necesario (vea la figura 3). No se diseñó para hacer que se agreguen o eliminen aplicaciones completas (dado que las aplicaciones instaladas de MSI no se pueden instalar sin conexión).

Figura 3 Modificación de un archivo WIM montado

Figura 3** Modificación de un archivo WIM montado **(Hacer clic en la imagen para ampliarla)

Es esencial entender que mientras realiza cambios en el archivo WIM cuando está montado no cambia directamente el archivo WIM mismo (al menos no de inmediato) sino que cambia una memoria caché del archivo WIM que es, en realidad, una combinación de la superposición y los cambios realizados. Como explico en la barra lateral, ya experimenté antes este problema. Una vez que finalice, asegúrese de usar los modificadores de comandos /unmount y /commit, porque sólo entonces sus cambios se confirmarán en el archivo WIM. De lo contrario, se perderán por completo.

Cuando guarda sus cambios confirmándolos, le indica al controlador que realice los cambios en el propio archivo WIM. El controlador agrega los datos adicionales del archivo. Tenga en cuenta que si ha realizado muchos cambios, significa que /commit puede necesitar mucho tiempo, dado que sólo entonces se agregan al WIM los datos del archivo.

Además, a diferencia de los que sucede en un formato de procesamiento imágenes basado en sectores, es posible que haya cambiado uno o varios archivos en la imagen de volumen. Como resultado, los archivos ya no tienen una instancia única (a menos que este mismo archivo ya se haya almacenado otra vez) y se perderán los datos del archivo original. WIM, a diferencia de un volumen NTFS o FAT, no marca un archivo como eliminado (ya no hace referencia a él pero no lo limpia). Como resultado, si hace ediciones frecuentes con /mountrw, anexa con /append muchas imágenes o usa /delete para eliminar una imagen de volumen, lo único que hace el archivo WIM es olvidar las referencias a los datos del archivo, pero no quita por completo los datos de archivo relacionados.

Por ello, el equipo de desarrollo creó el modificador de comandos /export, que también se conoce en cierto sentido como el "desfragmentador de WIM".

Exportación

Notas importantes sobre /export

Cuando se usa /export para crear un nuevo archivo WIM, se puede especificar qué tipo de compresión usar en lugar de aceptar el tipo de compresión predeterminado usado actualmente. Si cambia el tipo de compresión actual, es posible que la exportación necesite mucho tiempo.

Cuando se usa de forma equivalente a /append (mediante la adición de una imagen de volumen a un archivo WIM existente), /export no permite modificar el atributo /compression del archivo WIM.

Si exporta una imagen de volumen de Windows PE 2.0 totalmente nueva, puede especificar el modificador de comandos /boot.

El modificador de comandos /export se crea en respuesta a los escenarios mencionados anteriormente, y a unos cuantos escenarios más esotéricos detectados por el equipo. En pocas palabras, /export permite tomar una imagen de volumen existente (dos o tres) y exportarla. Esto significa tomar rápidamente los archivos WIM X y X1 anteriores y crear un nuevo WIM sólo con X, sólo con X1, o con X1 e Y1 mediante la exportación a partir de otro archivo WIM.

Imagine un escenario en que realiza modificaciones a X y anexa los cambios con /append como X1. Decide que desea eliminar X dado que lo ha sustituido con su nueva imagen para este trimestre. Puede usar el modificador de comandos /delete e ImageX se olvidará de la imagen X. Sin embargo, para ahorrar espacio y eliminar toda la información relacionada con X, debe ejecutar este comando:

ImageX /export source.wim 2 destination.wim "New image for Q4CY07"

De este modo exportará la segunda imagen de volumen a un nuevo archivo WIM con el nuevo nombre y eliminará por completo la información anterior de la imagen de volumen 1. También puede exportar imágenes WIM distribuidas si desea reensamblarlas en un archivo WIM (como analizaré posteriormente en este artículo). Las imágenes distribuidas no se pueden editar mediante /mountrw, lo cual puede ser un motivo reensamblarlas. Es importante tener en cuenta que no existe un comando /import para ImageX porque /export puede crear nuevos archivos WIM o anexarse a archivos existentes. Consulte la barra lateral "Notas importantes sobre /export" para obtener información adicional sobre este tema.

Esta cuestión también es crucial si ejecuta peimg /prep: aunque este comando prepara la imagen de Windows PE para su uso, no realiza ninguna limpieza en WIM. Lo ideal es que, como parte del proceso de lanzamiento de Windows PE, prepare la imagen y, a continuación, la exporte a un nuevo archivo boot.wim. Tenga en cuenta que el proceso de arranque sólo sabe buscar en \sources\boot.wim el archivo WIM, así que asegúrese que su nombre sea correcto y que esté marcado como una imagen de volumen de arranque.

He mencionado que probablemente desee optimizar sus imágenes a través de la ejecución de /export en ellas cuando esté preparado para retirar de servicio las antiguas imágenes de volumen, o combinar varias imágenes juntas. También deseará hacerlo si realizó numerosas ediciones con /mountrw o /delete. En caso contrario, su archivo WIM continuará creciendo con el tiempo (de maneras misteriosas que no podrá diagnosticar). Si usa /mountrw o /delete con regularidad, considere agregar /export en su flujo de trabajo para garantizar que sus imágenes están totalmente optimizadas.

Expansión

Desde el principio, otro problema que surgió fue la probable necesidad de que los archivos WIM se ajustasen en múltiples partes de medios brillantes. Anticipamos que Windows se entregaría en varios CD (y posiblemente en DVD, como pasó) y, como resultado, incorporo la compatibilidad de expansión en WIM y ImageX.

Como mencioné, una imagen distribuida que se crea mediante /split es básicamente de sólo lectura; no se puede realizar /capture directamente en una nueva imagen distribuida, no se puede montar mediante ImageX y no se puede anexar mediante /append. Por tanto, recomiendo que divida su archivo WIM sólo después de que termine su flujo estándar de trabajo y esté listo para realizar el lanzamiento. Es decir, realice todas sus ediciones en el archivo WIM normal y considere la posibilidad de dividirlo, como parte del proceso del lanzamiento para su escenario de implementación.

En lo que se refiere a la aplicación de la imagen, las imágenes distribuidas pueden suponer un desafío. Sugiero usar ImageX en lugar del programa de instalación cuando se usan imágenes distribuidas. También recomiendo aplicar las imágenes a través de la red (para obtener un óptimo rendimiento, sin crear una imagen del disco a partir del cuál se aplican) o bien copiarlas directamente a la unidad de disco y aplicarlas después (teniendo en cuenta que estará enlazada al disco, dado que el disco se lee y escribe en el momento de aplicar la imagen).

Búsqueda de validación

Cuando usa ImageX, mueve muchos datos que, además, son muy importantes. Una pregunta frecuente que este año escuché en Tech•Ed fue: "¿Cómo puedo asegurarme de que mis imágenes son válidas?" Pues ni es pan comido ni resulta tampoco tan difícil.

Lo más importante que debe entender acerca de WIM es que, como la mayoría de los formatos de archivo, es susceptible de dañarse. La mayoría de las veces este daño se produce cuando un archivo WIM se transmite a través de la red. Desde el principio en Windows Vista, vimos problemas específicos con tarjetas de red específicas: si eliminaban paquetes, el archivo WIM se dañaba, y no siempre de una manera fácil de diagnosticar. Esta situación reflejaba en realidad lo que hubiera sucedido años antes cuando el archivo driver.cab aumentaba de tamaño: se dañaba de forma aleatoria también. Generalmente, cuando se obtienen informes de imágenes incorrectas o de errores de instalación, se desea comprobar qué tipo de NIC está en uso en los sistemas que generan los informes. Esto sucede tanto si usa ImageX por separado como si ejecuta WDS.

Así que ¿cómo se puede comprobar si una imagen está en buen estado o no? Primero, puede usar el modificador de comandos /check. De este modo se guardan comprobaciones de integridad adicionales en el archivo WIM y se comprueba, antes de su aplicación, que WIM no se haya dañado. Asegúrese de ejecutar también /check en el momento de aplicar la imagen, con lo cuál se validará (aunque este proceso lleva más tiempo).

Además, si tiene problemas, o simplemente si desea ser meticuloso, puede ejecutar una utilidad de operaciones hash en los archivos antes de las capturas y después de la aplicación. Puede también realizar la comprobación después de la captura si monta la imagen y vuelve a realizar la operación hash; ésta es una buena forma de garantizar la captura correcta de la imagen.

Deseará garantizar que sus imágenes se capturan de manera correcta desde el principio. El modificador de comandos /check y el propio formato están diseñados como puntos de control, no como herramientas de recuperación para reparar una imagen capturada de manera incorrecta.

Arranque y marcadores

Mencioné anteriormente que puede usar /boot para capturar una imagen de volumen WIM de Windows PE y arrancarla. Debe considerarse simplemente como un sector de arranque en una imagen de volumen determinada. Sólo puede existir en una única imagen de volumen por WIM y sólo es válido en Windows PE 2.0. Tenga en cuenta que no puede arrancar Windows PE 1.x con WIM: es sencillamente imposible.

Es posible que en las imágenes de volumen de Windows vea referencias a marcadores. Sólo la instalación de Windows usa marcadores. Un marcador 2 en una imagen de volumen significa que una imagen de volumen que contiene Windows PE y la instalación. Un marcador 9 significa que sólo contiene Windows PE. Cualquier otro marcador o la ausencia de un marcador significa que la instalación no usará ni debe usar la imagen. Debe tener en cuenta que puede establecer marcadores en una imagen después de que se haya capturado y usar ImageX para modificarlos. Recomiendo usar WAIK (y opcionalmente Business Desktop Deployment Solution Accelerator) para crear su imagen WIM de arranque de Windows PE porque, para empezar, los marcadores se establecerán correctamente.

Una nota para usuarios de HTA

Recientemente me he enterado de que se ha comunicado la existencia de problemas con la ejecución de archivos HTA en Windows PE 2.0. Desafortunadamente, parece ser un problema de los archivos HTA que contienen un volumen de scripting considerable. En la figura 4, examine la captura de pantalla del archivo de ejemplo creado y observe el error de scripting devuelto (que no contiene información). Varios clientes notificaron este problema y yo mismo lo experimenté.

Figura 4 Error de scripting de HTA

Figura 4** Error de scripting de HTA **(Hacer clic en la imagen para ampliarla)

Afortunadamente, la solución es relativamente fácil. Al preparar su imagen, agregue compatibilidad XML así como compatibilidad HTA. La dependencia que falta en el componente HTA parece estar incluida en el módulo del complemento XML, con lo cual se resuelve este problema.

Me gustaría dar las gracias a Bruce Green, desarrollador de ImageX, y a Minxiao Zhou y Raja Ganjikunta del Equipo de pruebas de implementación de Windows por su ayuda en este artículo.

Wes Miller es director de desarrollo de Pluck (www.pluck.com) en Austin, Texas. Anteriormente, trabajó en Winternals Software, en Austin, y en Microsoft como director de programas y director de productos para Windows. 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.