[DEFAULT]
# The location of the WIM file from the mounted Windows ISO.
wim_file_path=D:\Sources\install.wim
# This is the complete name of the Windows version that will be generated.
# In order to find the possible options, use the Get-WimFileImagesInfo command
# and look for the Name property.
image_name=Windows 10 Home
# The destination of the generated image.
image_path=C:\images\my-windows-image.raw.tgz
# Select between VHD, VHDX, QCOW2, VMDK or RAW formats.
virtual_disk_format=VHDX
# This parameter allows to choose between MAAS, KVM, VMware and Hyper-V specific images.
# For HYPER-V, cloudbase-init will be installed and the generated image should be in vhd or vhdx format.
# For MAAS, in addition to cloudbase-init, the curtin tools are installed
# and the generated image should be in raw.tgz format.
# For KVM, in addition to cloudbase-init, the VirtIO drivers are installed
# and the generated image should be in qcow2 format.
image_type=MAAS
# This parameter can be set to either BIOS or UEFI.
disk_layout=BIOS
# The product key for the selected OS. If the value is default_kms_key and the Windows image is
# ServerStandard or ServerDatacenter (Core), the appropiate KMS key will be used.
product_key=""
# A comma separated array of extra features that will be enabled on the resulting image.
# These features need to be present in the ISO file.
extra_features=""
# A comma separated array of extra capabilities that will be enabled on the resulting image.
# These capabilities need to be present in the ISO file.
extra_capabilities=""
# It will force the image generation when RunSysprep is False or the selected SwitchName
# is not an external one. Use this parameter with caution because it can easily generate
# unstable images.
force=False
# If set to true, MAAS Windows curtin hooks will be copied to the image root directory.
install_maas_hooks=True
# Select between tar, gz, zip formats or any combination between these.
compression_format=""
# If this parameter is set, after the image is generated,
# a password protected zip archive with the image will be created.
# compression_format must contain zip in order for this parameter to be used
zip_password=""
# It will stop the image generation after the updates are installed and cleaned.
gold_image=False
# This is the full path of the already generated golden image.
# It should be a valid VHDX path.
gold_image_path=""
# This is a full path to the VMware-tools.exe version that you want to install.
vmware_tools_path=""
# If set to true, .NET Framework 3.5 will be installed before the windows updates.
# This feature applies only ot Windows server 2012 R2.
install_net_3_5=False
# This is the full path of a folder with custom resources which will be used by
# the custom scripts.
# The resources found at this path will be copied recursively to the image
# UnattendResources\CustomResources folder.
custom_resources_path=""
# This is the full path of the folder which can contain a set of PS scripts,
# that will be copied and executed during the online generation part on the VM.
# The PowerShell scripts, if existent, will be started by Logon.ps1 script,
# at different moments during image generation.
# The purpose of these scripts is to offer to the user a fully
# customizable way of defining additional logic for tweaking the final image.
# The scripts files can have the following names: RunBeforeWindowsUpdates.ps1,
# RunAfterWindowsUpdates.ps1, RunBeforeCloudbaseInitInstall.ps1, RunAfterCloudbaseInitInstall.ps1,
# RunBeforeSysprep.ps1, RunAfterSysprep.ps1.
# The script names contain the information on when the script will be executed.
# One can define only some of the hook scripts and it is not mandatory to define all of them.
# If a script does not exist, it will not be executed.
custom_scripts_path=""
# If set to true the Administrator account will be enabled on the client
# versions of Windows, which have the Administrator account disabled by default
enable_administrator_account=False
# Whether to shrink the image partition and disk after the image generation is complete.
shrink_image_to_minimum_size=True
# If set to true, a custom wallpaper will be set according to the values of configuration options
# wallpaper_path and wallpaper_solid_color
enable_custom_wallpaper=True
# If set, it will replace the Cloudbase Solutions wallpaper to the one specified.
# The wallpaper needs to be a valid .jpg/.jpeg image.
wallpaper_path=""
# If set, it will replace the Cloudbase Solutions wallpaper to a solid color.
# Currently, the only allowed solid color is '0 0 0' (black).
# If both wallpaper_path and wallpaper_solid_color are set,
# the script will throw an error.
wallpaper_solid_color=""
# If set, the animation displayed during the first login on Windows Client versions will be disabled.
disable_first_logon_animation=False
# If set to true and the target image format is QCOW2, the image conversion will
# use qemu-img built-in compression. The compressed qcow2 image will be smaller, but the conversion
# will take longer time.
compress_qcow2=False
# If set to true, during final cleanup, https://github.com/felfert/ntfszapfree will be used to zero unused space.
# This helps qemu-img to minimize image size. In order to benefit from this, an additional invocation
# of qemu-img convert must be performed after the initial run of the image has shutdown.
zero_unused_volume_sectors=False
# A comma separated list of extra packages (referenced by filepath)
# to slipstream into the underlying image.
# This allows additional local packages, like security updates, to be added to the image.
extra_packages=""
# Ignore failures from DISM when installing extra_packages, such as when
# updates are skipped which are not applicable to the image.
extra_packages_ignore_errors=False
# Enables shutdown of the Windows instance from the logon console.
enable_shutdown_without_logon=False
# If set to true, firewall rules will be added to enable ping requests (ipv4 and ipv6).
enable_ping_requests=False
# If set to true, use EUI-64 derived IDs and disable privacy extensions for IPv6.
# If set to false, the IPv6 protocol might not work on OpenStack or CloudStack.
# See https://github.com/cloudbase/windows-openstack-imaging-tools/issues/192
enable_ipv6_eui64=False
# If set to true, it will set the High Performance mode and some power mode
# and registry tweaks to prevent the machine from sleeping / hibernating.
enable_active_mode=False
[vm]
# This will be the Administrator user's, so that AutoLogin can be performed on the instance,
# in order to install the required products,
# updates and perform the generation tasks like sysprep.
administrator_password=Pa$$w0rd
# Used to specify the virtual switch the VM will be using.
# If it is specified but it is not external or if the switch does not exist,
# you will get an error message.
external_switch=external
# The number of CPU cores assigned to the VM used to generate the image.
cpu_count=4
# RAM (in bytes) assigned to the VM used to generate the image.
ram_size=4294967296
# Disk space (in bytes) assigned to the boot disk for the VM used to generate the image.
disk_size=32212254720
# If set to true and the disk layout is UEFI, the secure boot firmware option will be disabled.
disable_secure_boot=False
[drivers]
# The path to the ISO file containing the VirtIO drivers.
virtio_iso_path=C:\images\virtio.iso
# The location where the VirtIO drivers are found.
# For example, the location of a mounted VirtIO ISO. VirtIO versions supported >=0.1.6.x
virtio_base_path=""
# The location where additional drivers that are needed for the image are located.
drivers_path=C:\drivers\
[custom]
# Installs QEMU guest agent services from the Fedora VirtIO website.
# Defaults to 'False' (no installation will be performed).
# If set to 'True', the following MSI installer will be downloaded and installed:
# * for x86: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-qemu-ga/qemu-ga-win-100.0.0.0-3.el7ev/qemu-ga-x86.msi
# * for x64: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-qemu-ga/qemu-ga-win-100.0.0.0-3.el7ev/qemu-ga-x64.msi
# The value can be changed to a custom URL, to allow other QEMU guest agent versions to be installed.
# Note: QEMU guest agent requires VirtIO drivers to be present on the image.
install_qemu_ga=False
# Set a custom timezone for the Windows image.
time_zone=""
# Set custom ntp servers(space separated) for the Windows image
ntp_servers=""
[updates]
# If set to true, the latest updates will be downloaded and installed.
install_updates=True
# If set to true, will run DISM with /resetbase option. This will reduce the size of
# WinSXS folder, but after that Windows updates cannot be uninstalled.
purge_updates=True
# Clean up the updates / components by running a DISM Cleanup-Image command.
# This is useful when updates or capabilities are installed offline.
clean_updates_offline=False
# Clean up the updates / components by running a DISM Cleanup-Image command.
# This is useful when updates or other packages are installed when the instance is running.
clean_updates_online=True
[sysprep]
# Used to clean the OS on the VM, and to prepare it for a first-time use.
run_sysprep=True
# The path to the Unattend XML template file used for sysprep.
unattend_xml_path=UnattendTemplate.xml
# DisableSwap option will disable the swap when the image is generated and will add a setting
# in the Unattend.xml file which will enable swap at boot time during specialize step.
# This is required, as by default, the amount of swap space on Windows machine is directly
# proportional to the RAM size and if the image has in the initial stage low disk space,
# the first boot will fail due to not enough disk space. The swap is set to the default
# automatic setting right after the resize of the partitions is performed by cloudbase-init.
disable_swap=True
# In case the hardware on which the image is generated will also be the hardware on
# which the image will be deployed this can be set to true, otherwise the spawned
# instance is prone to BSOD.
persist_drivers_install=True
[cloudbase_init]
# This is a switch that allows the selection of Cloudbase-Init branches. If set to true, the
# beta branch will be used:
# https://cloudbase.it/downloads/CloudbaseInitSetup_<arch>.msi, where arch can be x86 or x64
# otherwise the stable branch will be used:
# https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_<arch>.msi, where arch can be x86 or x64
beta_release=False
# Serial log port for Cloudbase-Init.
# If set to null, the first serial port (if any) from the generation VM will be used
serial_logging_port=COM1
# If set, the Cloudbase-Init msi at this path will be used.
# The path needs to be a locally accessible file path.
msi_path=""
# If set, the cloudbase-init.conf is replaced with the file at the path.
cloudbase_init_config_path=""
# If set, the cloudbase-init-unattend.conf is replaced with the file at the path.
cloudbase_init_unattended_config_path=""
# If set, the Cloudbase-Init service will be run under Local System account.
# By default, a user named cloudbase-init with admin rights is created and used.
cloudbase_init_use_local_system=False
# If set, the Cloudbase-Init service startup type will be set to delayed-auto
cloudbase_init_delayed_start=False
PS C:\windows-openstack-imaging-tools> .\Examples\create-windows-online-cloud-image.ps1
WARNING: C:\windows-openstack-imaging-tools\Examples\config.ini exists and it will be rewritten.
10/11/2023 10:04:54 - Windows online image generation started.
10/11/2023 10:04:57 - Cloud image generation started.
10/11/2023 10:04:58 - Creating Virtual Disk Image: C:\images\my-windows-image.vhdx...
10/11/2023 10:05:02 - Successfully created disk: C:\images\my-windows-image.vhdx
10/11/2023 10:05:02 - Generating Unattend XML: E:\Unattend.xml...
10/11/2023 10:05:02 - XML was generated.
10/11/2023 10:05:02 - Copying Unattend Resources: Client...
10/11/2023 10:05:02 - Copying: C:\windows-openstack-imaging-tools\UnattendResources to E:\UnattendResources
10/11/2023 10:05:02 - Resources have been copied.
10/11/2023 10:05:02 - Copying Custom Resources...
10/11/2023 10:05:02 - Custom Resources at: E:\UnattendResources.
10/11/2023 10:05:02 - Setting wallpaper...
10/11/2023 10:05:02 - Wallpaper copied to the image.
10/11/2023 10:05:02 - Wallpaper GPO copied to the image.
10/11/2023 10:05:02 - Wallpaper was set.
10/11/2023 10:05:02 - Downloading Cloudbase-Init...
10/11/2023 10:06:03 - Applying Windows image "D:\Sources\install.wim" to "E:\"
Deployment Image Service and Management Tool
Version: 10.0.19041.844
Applying image
[==========================100.0%==========================]
Operation completed successfully.
10/11/2023 10:09:28 - Creating BCDBoot Configuration for Windows 10 Home
10/11/2023 10:09:29 - Resetting BCD boot order
Operation completed successfully.
Operation completed successfully.
Operation completed successfully.
10/11/2023 10:09:29 - BCDBoot configuration has been created.
10/11/2023 10:09:29 - Adding drivers from "C:\drivers\" to image "E:\"
Deployment Image Service and Management Tool
Version: 10.0.19041.844
Image Version: 10.0.19045.2965
Searching for driver packages to install...
Found 95 driver package(s) to install.
Installing 1 of 95 - C:\drivers\audio\KKYCX\RealtekAudio\Win64\HDXACPDELLCSMB.inf: The driver package was installed successfully.
Installing 2 of 95 - C:\drivers\audio\KKYCX\RealtekAudio\Win64\HDXDELLBC2018.inf: The driver package was installed successfully.
(Continuing installation for the remaining driver packages...)
Installing 95 of 95 - C:\drivers\storage\YJWR3\15063\Drivers\Drivers\RAID\iaStorAC.inf: The driver package was installed successfully.
Operation completed successfully.
10/11/2023 10:10:22 - Adding Virtual IO Drivers from ISO: C:\images\virtio.iso...
10/11/2023 10:10:23 - Using the backed-up ISO for safe dismount.
10/11/2023 10:10:26 - Adding drivers from F:
10/11/2023 10:10:26 - Adding Virtual IO Drivers: F:...
10/11/2023 10:10:26 - Getting Virtual IO Drivers: F:...
10/11/2023 10:10:26 - Finished retrieving IO Drivers.
10/11/2023 10:10:26 - Adding drivers from "F:\balloon\w10\AMD64" to image "E:\"
WARNING: Dism failed to add drivers from: F:\balloon\w10\AMD64
WARNING: Dism failed to add drivers from: F:\balloon\w10\AMD64
WARNING: Dism failed to add drivers from: F:\balloon\w10\AMD64
10/11/2023 10:10:42 - Dism failed to add drivers from: F:\balloon\w10\AMD64
Dism failed to add drivers from: F:\balloon\w10\AMD64
In C:\windows-openstack-imaging-tools\WinImageBuilder.psm1: Line 641 Character 13
+ throw "Dism failed to add drivers from: $driversPath"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Dism failed to ...balloon\w10\AMD64:String) [], RuntimeException
+ FullyQualifiedErrorId : Dism failed to add drivers from: F:\balloon\w10\AMD64
I don't know how to solve that driver problem. I tried creating a raw image for Openstack in several ways and this is the one that led me farther before coming to an error.
This is my config file:
This is the output in PowerShell:
I don't know how to solve that driver problem. I tried creating a raw image for Openstack in several ways and this is the one that led me farther before coming to an error.