Personalización de la imagen del sistema operativo de validación con GenImage (avanzado)
GenImage proporciona una interfaz de línea de comandos flexible y altamente personalizable para generar imágenes del sistema operativo de validación exactamente en sus escenarios. Image Builder del sistema operativo de validación usa GenImage, pero crea una capa de abstracción para obtener un flujo de trabajo práctico basado en la interfaz de usuario, aunque algo limitado. GenImage es capaz de mucho más de lo que se expone en la interfaz de usuario de Image Builder del sistema operativo de validación, y en esta sección se detallan los matices de la generación de una imagen del sistema operativo de validación totalmente personalizable.
Nota:
Las imágenes totalmente personalizadas significan que la imagen del sistema operativo de validación creada utilizando una lista arbitraria de paquetes de personalización puede dar como resultado un sistema operativo no funcional.
GenImage no generará una plantilla de solución de Visual Studio.
Proceso general
El proceso general para crear una imagen del sistema operativo de validación es el siguiente:
Monte el archivo ISO del sistema operativo de validación en una ubicación específica en el sistema de archivos del equipo técnico.
Inicie un símbolo del sistema con privilegios elevados y navegue hasta la carpeta
<ISO_ROOT>:\cabs
.[Opcional] Agregue los controladores a la imagen del sistema operativo de validación.
[Opcional] Cree un archivo de configuración de características personalizadas.
[Opcional] Agregue las características o paquetes a petición deseados a la imagen del sistema operativo de validación.
[Opcional] Establezca o invalide las claves del Registro en la imagen del sistema operativo de validación.
[Opcional] Incluya archivos binarios o aplicaciones personalizadas en la imagen del sistema operativo de validación.
[Opcional] Establezca la zona horaria de la imagen del sistema operativo de validación.
Paquetes de características predefinidos
La ISO del sistema operativo de validación contiene definiciones de paquetes de características predefinidas en la carpeta <ISO_ROOT>:\GenImage\configs
. Estos archivos .pkg
se pueden abrir en un editor de texto para examinar su contenido. La sección superior de estos archivos contiene más información sobre la característica específica.
Creación de un paquete de características personalizadas
Si las definiciones de paquetes de características predefinidas proporcionadas en la ISO del sistema operativo de validación no son adecuadas para un escenario determinado, se puede definir fácilmente un paquete de características personalizadas siguiendo el mismo formato fácil de usar que tienen los archivos .pkg
predefinidos:
Cualquier elemento que vaya después de
#
se considera un comentario.Un nombre de línea por paquete (.cab) sin la extensión de archivo. Estos archivos cab residen en
<ISO_ROOT>:\cabs\neutral
y tienen paquetes de idioma coincidentes en<ISO_ROOT>:\cabs\en-us
(si procede).Referencia a otra definición de característica que se va a incluir mediante el formato +include
<package_name>.<ext>
.
Los paquetes incluidos pueden residir en el mismo directorio que el archivo de definición de paquete personalizado, o bien pueden ser uno de los archivos .pkg
proporcionados como parte de la ISO del sistema operativo de validación en <ISO_ROOT>:\GenImage\configs
.
Nota:
No es necesario especificar una ruta de acceso de archivo para los paquetes incluidos.
- La versión wow64 del paquete no debe tener que agregarse al archivo de configuración. GenImage incluirá automáticamente la versión wow del paquete si existe.
Nota:
Si un paquete (.cab) aparece varias veces a través de una entrada duplicada en el archivo o a través de una definición de característica incluida, GenImage solo aplicará este paquete una vez.
Importante
Algunas características tienen dependencias entre paquetes (de cab a cab), lo que significa que la imagen del sistema operativo de validación generada no funcionará a menos que se incluyan todos los paquetes necesarios. GenImage no puede aplicar estas dependencias, por lo que es posible generar una imagen de sistema operativo de validación no funcional o parcialmente funcional al usar definiciones de características personalizadas.
Especificación de la imagen base (-ImagePath
y -ImageFile
)
Se puede usar el parámetro de línea de comandos -ImageFile:
para proporcionar el nombre de la imagen del sistema operativo de validación base.
Al trabajar con el archivo ISO del sistema operativo de validación proporcionado, este parámetro se puede omitir porque GenImage usará de forma predeterminada ValidationOS.wim
.
Se puede usar el parámetro de línea de comandos -ImagePath:
para proporcionar la ruta de acceso a la imagen del sistema operativo de validación base.
Al trabajar con el archivo ISO del sistema operativo de validación proporcionado, este parámetro se puede omitir, ya que GenImage usará como valor predeterminado la raíz de montaje de la ISO.
Inclusión de características (-PackagesList:
)
El argumento -PackagesList: de la línea de comandos permite usar una o varias características predefinidas o personalizadas proporcionando la ruta de acceso al archivo de configuración.
Al especificar varios archivos .pkg
, use este parámetro varias veces:
-PackagesList:<file1> -PackagesList:<file2> [...]
o utilice la sintaxis siguiente:
-PackagesList:"<file1>,<file2>[,...]"
Al usar el último formato, asegúrese de que la lista separada por comas esté entre comillas dobles.
-PackageList
y '-PkgLst: son alias para -PackagesList:
GenImage buscará el paquete a petición en <ISO_ROOT>:\cabs\neutral
y <ISO_ROOT>:\cabs\en-us
, a menos que se invalide mediante el parámetro -PackagePath: de la línea de comandos.
Inclusión de paquetes a petición sin usar definiciones de características (-Packages:
)
Se puede usar el parámetro -Packages:
de la línea de comandos para proporcionar una lista separada por comas de nombres de paquete a petición que se van a incluir en la imagen del sistema operativo de validación personalizada. La lista debe incluirse entre comillas dobles.
GenImage se seguirá encargando de añadir las variantes wow64 de los paquetes, no es necesario especificarlas mediante el parámetro -Packages:
.
Debido a la longitud de los nombres de paquete, es fácil crear una línea de comandos muy larga mediante el parámetro -Packages:
, por lo que se recomienda crear una definición de característica personalizada para agregar varios paquetes. Para obtener más información sobre las definiciones de características personalizadas, consulte Creación de un paquete de características personalizadas.
Invalidación de la ubicación del paquete predeterminada (-PackagePath
)
Se puede usar el parámetro -PackagePath:
de la línea de comandos para proporcionar la ruta de acceso a los paquetes del sistema operativo de validación a petición. En la ruta de acceso proporcionada, deben existir directorios neutros y en-us que contengan los archivos de paquete a petición correspondientes (incluidas las versiones wow si procede).
Al ejecutar GenImage desde la ISO del sistema operativo de validación, este parámetro se puede omitir, ya que GenImage usará como valor predeterminado <ISO_ROOT>:\cabs
.
Adición de controladores .inf a la imagen del sistema operativo de validación (-Drivers:
/ -DriversOnly
)
Se puede usar el parámetro -Drivers: de la línea de comandos para proporcionar la ruta de acceso a un repositorio específico del dispositivo de controladores. GenImage agregará de forma recursiva todos los controladores en la ruta de acceso especificada.
Si los controladores están estructurados en <WinVOS_Root>\Drivers\<my_device>,
, se puede usar el parámetro -HW:<my_device>
de la línea de comandos como acceso directo para incluir esos controladores. Consulte "Especificación de la ruta de acceso de la imagen del sistema operativo de validación personalizada" para obtener más información sobre WinVOS_Root.
Cuando los controladores se incluyen en la imagen del sistema operativo de validación personalizada, GenImage agregará automáticamente el paquete de características <ISO_ROOT>\GenImage\configs\usb.pkg
para asegurarse de que los controladores tienen los controladores de clase más básicos para que funcionen. Sin embargo, el uso del modificador de la línea de comandos -SkipDeviceFeatures
invalidará este comportamiento.
El uso del modificador de la línea de comandos -DriversOnly permite agregar controladores sin incluir características ni paquetes individuales.
Selección del destino de arranque de la imagen del sistema operativo de validación (-x
)
La imagen WIM del sistema operativo de validación personalizada se puede generar para dos escenarios de uso diferentes: aplicar la imagen directamente a la unidad de disco duro interna de un dispositivo de destino (arrancar desde C:) o usar el archivo .wim generado para reemplazar boot.wim en una unidad USB WinPE (arrancar desde X:).
Para dar cabida a ambos escenarios, el envío base ValidationOS.wim en la raíz de la ISO contiene dos particiones: la partición 1 se usa para ser compatible con la recuperación en C:, y la partición 2 para admitir los escenarios USB (arrancar desde X:).
De forma predeterminada, GenImage generará ValidationOS.wim que se recuperará en el disco duro interno de un equipo de destino (arrancar desde C:).
Se puede usar el parámetro -x
de la línea de comandos para generar una imagen que admita la unidad USB para arrancar desde el escenario X:.
Nota: -usb
es un alias para el parámetro -x
.
Inclusión de archivos personalizados en la imagen (-AddedSW
y -AddedSWTargetDir
)
Todos los archivos de la ruta de acceso especificada para el parámetro -AddedSW:
de la línea de comandos se copiarán en la imagen personalizada del sistema operativo de validación. De forma predeterminada, el contenido de esta ruta de acceso se copiará en <WIM_ROOT>:\Programs\<folder>
, donde folder es el nombre de la carpeta que se va a incluir. Por ejemplo, -AddedSW:D:\Test\MyFiles
se copiará en <WIM_ROOT>:\Programs\MyFiles
.
-AddedSW
se puede especificar varias veces apuntando a diferentes ubicaciones.
Se puede usar el parámetro -AddedSWTargetDir:
de la línea de comandos para invalidar la ubicación de destino de la imagen personalizada del sistema operativo de validación.
Se puede usar el modificador -NoPackages
de la línea de comandos para procesar una imagen del sistema operativo de validación ya personalizada y agregar archivos como paso independiente.
Cambio del registro (-RegistryImport:
)
Se puede usar el parámetro -RegistryImport:
de la línea de comandos para aplicar un archivo .reg
estándar del Editor del Registro de Windows versión 5.00 a la imagen personalizada del sistema operativo de validación.
Se puede usar el modificador -NoPackages
de la línea de comandos para procesar una imagen del sistema operativo de validación ya personalizada y personalizar el registro como paso independiente.
Cambio de la zona horaria (-TimeZone:
)
Se puede usar el parámetro -TimeZone:
de la línea de comandos para modificar la zona horaria de la imagen personalizada del sistema operativo de validación. La cadena proporcionada debe ser una zona horaria válida de Windows; de lo contrario, GenImage producirá un error.
Especificación de la ruta de acceso de la imagen personalizada del sistema operativo de validación (-OutPath:
/ -WinVOS_Root:
)
Al ejecutar GenImage desde la ISO del sistema operativo de validación montada, generará de forma predeterminada su salida (y todo el contenido intermedio) en el directorio C:\WinVOS\out\<date>-<time>
(por ejemplo, C:\WinVOS\out\240116-1242
). Este comportamiento se puede cambiar, pero mediante los parámetros de la línea de comandos -OutPath:
o -WinVOS_Root:
. La diferencia entre los dos son las siguientes:
-OutPath:
especificará la ubicación de salida exacta, por lo que el WIM del sistema operativo de validación personalizado y todo el contenido intermedio se creará en este directorio.
Importante
El uso de lo mismo -OutPath:
para una ejecución posterior de GenImage puede dar lugar a efectos secundarios inesperados.
-WinVOS_Root:
creará una subcarpeta out\<date>-<time>
en el directorio especificado.
Sugerencia
Es preferible usar -WinVOS_Root:
en lugar de -OutPath:
para evitar problemas con conflictos de archivos temporales o archivos .wim montados.
De forma predeterminada, GenImage usará -OutPath:
para montar el WIM para su procesamiento. Se puede usar el parámetro -MountDir:
de la línea de comandos para invalidar la ubicación de este punto de montaje intermedio.
Limpieza de WIM montados potencialmente bloqueados (-CleanUp
)
Si GenImage se interrumpe o se bloquea un WIM montado, se puede usar el parámetro -CleanUp
de la línea de comandos para intentar una limpieza automática.
Este parámetro solo se puede usar por sí mismo.
Omisión de la confirmación del procesamiento de imágenes (-NoWait
)
Se puede usar el parámetro -NoWait
de la línea de comandos para omitir la confirmación después de mostrar la opción de generación de imágenes y continuar con el procesamiento de imágenes.
Salida detallada
Se puede usar el parámetro -v
de la línea de comandos para cambiar el nivel de registro de GenImage a detallado.
El uso de este modificador generará una gran cantidad de resultados y se recomienda redirigir el estándar a un archivo.
Visualización del uso de scripts
Se puede usar el parámetro -h
de la línea de comandos para mostrar la información de uso del script.
-?
y -help
son alias de -h
Ejemplos de GenImage
Suponiendo que la ISO del sistema operativo de validación esté montada en J:
, estos son algunos ejemplos para generar WIM de sistema operativo de validación personalizados.
Adición de una característica multimedia sin controladores con los valores predeterminados de ISO
J:\GenImage>GenImage.cmd -PackagesList:J:\GenImage\configs\multimedia.pkg
Adición de características multimedia y Wi-Fi con controladores con los valores predeterminados de ISO, omitiendo la confirmación
Suponiendo que los controladores estén colocados en D:\Drivers\MyDevice
J:\GenImage>GenImage.cmd -PackagesList:J:\GenImage\configs\multimedia.pkg -PackagesList:J:\GenImage\configs\wifi.pkg -drivers:D:\Drivers\MyDevice -NoWait
... o bien ...
J:\GenImage>GenImage.cmd -PackagesList:"J:\GenImage\configs\multimedia.pkg,J:\GenImage\configs\wifi.pkg" -drivers:D:\Drivers\MyDevice -NoWait
Adición de una característica de aprovisionamiento sin controladores con WIM personalizado previamente
J:\GenImage>GenImage.cmd -PackagesList:J:\GenImage\configs\provisioning.pkg -ImagePath:C:\WinVOS\out\240116-1530
Adición de una característica de depuración con controladores e inclusión de Python
Suponiendo que Python se haya extraído en D:\Staging\Python
y los controladores se hayan colocado en D:\Drivers\MyDevice
J:\GenImage>GenImage.cmd -PackagesList:J:\GenImage\configs\debug.pkg -ImagePath:J:\ -Drivers:D:\Drivers\MyDevice -AddedSW:D:\Staging\Python
Uso completo de GenImage.cmd
GenImage.cmd es altamente personalizable para admitir varios escenarios personalizados. Esta es la lista completa de parámetros que toma, junto con algunos ejemplos de uso:
[-Packages:|-PackagesList:|-DriversOnly|-NoPackages]
[-Drivers:|-HW]
[-WinVOS_Root:] [-MountDir:]
[-wim|-vhd|-vhdx] [-usb|-x] [-inc]
[-TimeZone:]
[-AddedSW: [-AddedSWTargetDir:]]
[-RegistryImport:] [-StartupCommand:]
[-NoWait] [-v]
NOTE: Running From ISO: [YES]
-?|-h|-help This screen
-ImageFile: <file_name> File name of the image file to be processes.
Defaults to ValidationOS.wim
-wim, -vhd and -vhdx are ignored
-ImagePath:<file_path> Path to the image file to be processed.
Default/Current: [J:\]
-PackagePath:<path> Path to the cab files to be added to the image.
Defaults to J:\cab or J:\Packages
Neutral and localized packages are placed into their respective
folders under "cab": "neutral" and "en-us".
-OutPath:<path> Location of the generated image
Default/Current: [C:\WinVOS\out\240116-1640]
-Packages:<list> Comma or space separated list of packages.
Use double quotes around the list.
-PackagesList|PackageList|PkgLst:<file> Use a text file to specify which
packages will be added to the image
One package name per line, use # for comments
-NoPackages Do not include any packages
-DriversOnly Do not include any packages, add drivers only
Requires specifying either -Drivers or -HW, but not both
-Drivers:<path> Path to drivers
If neither -HW nor -Drivers are not specified
no drivers will be added to the image.
If -HW was used defaults to C:\WinVOS\Drivers\%HW%
-HW:<hardware> Hardware variant used for driver installation.
If neither -HW nor -Drivers are specified, no
drivers will be added to the image.
The value specified for this parameter will be appended
to [C:\WinVOS\Drivers]
-SkipDeviceFeatures Do NOT automatically include USB support when
drivers are added to the image
-WinVOS_Root:<path> Root of the directory structure to process
Default/Current: [C:\WinVOS]
-MountDir:<path> Path to mount the image to for processing
Default/Current: C:\WinVOS\out\240116-1640\mnt
-wim Assume the image is a wim file
This is default extension unless -ImageFile, -vhd(x) are specified.
-vhd|-vhdx Assume the image is a vhdx file
.wim is default extension unless -ImageFile is specified.
-usb|-x Assume USB boot and set the image index to 2 during mount
Default image index is 1
-TimeZone:<time zone> Sets the time zone of the image to the specified value.
NOTE: The validity of this setting is not checked.
-AddedSW:<path> Files and folders under path will be copied into the
generated image.
Default target location is \Programs, can be overriden with
-AddedSWTargetDir
-AddedSWTargetDir:<path> Target - in image - path to copy the contents specified by AddedSW.
Default is \Programs
-RegistryImport:<file> Path the a .reg file to be imported into the generated image.
This file can multiple hives under HKLM. Supported hives:
COMPONENTS DEFAULT DRIVERS SAM SECURITY SOFTWARE SYSTEM
-StartupCommand:<file> Path the an executablefile to be used as the ValidationOS Shell
On boot this file will be executed first. If the file does not spawn
a new CMD window, the shell will be this new executable.
-inc|-incremental Do not restore the package from backup
-CleanUp Clean up lingering mounted images.
Will attempt to clean up the mounted into /MountDir.
If /MountDir is not specified it will attempt to clean up
any corrupted and/or prevously mounted images.
NOTE: Not using /MountDir with /Cleanup is a drastic cleaup tactic.
-NoWait Don't pause after displaying image generation settings.
-v Verbose logging
Examples:
* Add all packages in the default "cab" folder under the default package path [J:\cabs] to the default image
file [ValidationOS.wim] under the default path [J:\] without including drivers:
GenImage
* Add all packages under the "cab" folder to a ValidationOS.wim and include the drivers for "SP6"
GenImage -ImageFile:ValidationOS.wim -ImagePath:C:\WinVOS\release\25108.1001.220429-1329\amd64fre -HW:SP6
* Add packages specified in custom.pkg under the "cab" folder to a ValidationOS.vhdx without including drivers:
GenImage -ImagePath:C:\WinVOS\release\25108.1001.220429-1329\amd64fre -vhdx -PackagesList:custom.pkg
* Incrementally add "Microsoft-WinVOS-NetFx45-Package" to ValidationOS.wim. The package is located in "cab" under the specified image path folder.
GenImage -inc -ImageFile:ValidationOS.wim -ImagePath:C:\WinVOS\release\25108.1001.220429-1329\amd64fre -Packages:"Microsoft-WinVOS-NetFx45-Package"
Nota sobre el uso de la versión coincidente del conjunto de herramientas dism para la creación de imágenes
Al ejecutar GenImage.cmd desde la ISO montada, el script prefiere usar el dism.exe que se envía en la ISO junto con GenImage.cmd. Esta es la versión recomendada de dism para cualquier tarea de manipulación de imágenes porque coincide con la versión de la herramienta usada para crear el ValidationOS.wim enviado y los paquetes opcionales.
(Experimental) Agregar compatibilidad con WWAN
Precaución
Se trata de una característica experimental con compatibilidad muy limitada.
El sistema operativo de validación ha introducido la compatibilidad temprana con WWAN, para proporcionar interacción con el módem a través de comandos AT.
Se deben agregar dos paquetes a la composición de la imagen: Microsoft-WinVOS-WWAN-Package
y Microsoft-WinVOS-PnP-Settings
.
GenImage no admite este escenario, lo que significa que los paquetes se deben aplicar mediante dism.exe proporcionados en la ISO del sistema operativo de validación. Asegúrese de usar dism.exe desde <ISO_ROOT>:\GenImage\Tools\DISM\%PROCESSOR_ARCHITECTURE%
donde PROCESSOR_ARCHITECTURE
es la arquitectura del procesador del equipo del técnico (por ejemplo, AMD64).