cloudbase / windows-imaging-tools

Tools to automate the creation of a Windows image for OpenStack, supporting KVM, Hyper-V, ESXi and more.
Apache License 2.0
656 stars 225 forks source link

Drivers error while running Examples/create-windows-online-cloud-image.ps1 #384

Closed Anacardoide closed 9 months ago

Anacardoide commented 9 months ago

This is my config.ini file contents:

[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_.msi, where arch can be x86 or x64

otherwise the stable branch will be used:

https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_.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

And this is the console output when running said file (I want to create a RAW image for OpenStack, I tried other ways but this is the one that led me farthest before coming to an error...):

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

I don't know how to solve that driver problem.