Este guia detalha o processo de criação de uma Golden Image do Windows 11 otimizada para ambientes de laboratório baseados em KVM/libvirt, utilizando a estratégia de Overlays (QCOW2 Backing Files) para máxima eficiência de disco e agilidade no provisionamento.
O objetivo principal é reduzir o consumo de CPU, RAM e espaço em disco antes da captura da imagem base, garantindo que cada clone seja o mais leve possível.
Garanta que a imagem base esteja com as últimas atualizações de segurança e funcionalidades. Isso minimiza a necessidade de atualizações em cada overlay.
# Verificar e instalar atualizações (pode exigir reinicializações)
Install-Module PSWindowsUpdate -Force
Get-WindowsUpdate -Install -AcceptAll -AutoReboot
Nota: Este passo é crucial para manter a segurança e a estabilidade. O versionamento (Seção 9) ajudará a rastrear as atualizações aplicadas.
Melhora o desempenho em VMs com poucos recursos, especialmente em acessos remotos (VNC/SPICE).
Caminho: Sistema → Configurações Avançadas → Desempenho → Ajustar para melhor desempenho
Desativar manualmente:
Reduz o consumo de recursos em idle.
Caminho: Configurações → Aplicativos → Inicialização
Desativar (se não utilizados):
Reduz significativamente o consumo de RAM e CPU em ambientes de laboratório.
Caminho: services.msc
Desativar ou configurar para Manual:
DiagTrack, dmwappushsvc) Para reduzir tráfego de rede e coleta de dados.Cuidado: Teste o sistema após desativar serviços para garantir que funcionalidades essenciais não foram afetadas.
Essencial para o desempenho de disco e rede em KVM. Instalar antes do Sysprep.
virtio-win-guest-tools.exe (instala drivers e o QEMU Guest Agent).VirtIO SCSI, VirtIO Net, VirtIO Balloon e VirtIO Serial.Execute como Administrador para maximizar a compressão da imagem final:
# Limpeza de componentes
dism /online /cleanup-image /startcomponentcleanup
cleanmgr /sageset:1 /sagerun:1
# Zerar espaço livre com SDelete (Fundamental para compressão)
sdelete -z C:
Padroniza a imagem para múltiplos clones, removendo IDs únicos (SID).
Comando:
C:\Windows\System32\Sysprep\Sysprep.exe /generalize /oobe /shutdown /mode:vm
Nota: Ocorreu um erro ao executar o comando. Ao consultar os logs
type C:\Windows\System32\Sysprep\Panther\setupact.logdescobrimos que o problema estava relacionado ao BitLocker.
2026-04-08 13:25:49, Error SYSPRP BitLocker-Sysprep: BitLocker is on for the OS volume. Turn BitLocker off to run Sysprep. (0x80310039)
2026-04-08 13:25:49, Error SYSPRP ActionPlatform::LaunchModule: Failure occurred while executing 'ValidateBitLockerState' from C:\Windows\System32\BdeSysprep.dll; dwRet = 0x80310039
2026-04-08 13:25:49, Error SYSPRP SysprepSession::Validate: Error in validating actions from C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml; dwRet = 0x80310039
2026-04-08 13:25:49, Error SYSPRP RunPlatformActions:Failed while validating Sysprep session actions; dwRet = 0x80310039
2026-04-08 13:25:49, Error [0x0f0070] SYSPRP RunDlls:An error occurred while running registry sysprep DLLs, halting sysprep execution. dwRet = 0x80310039
2026-04-08 13:25:49, Error [0x0f00d8] SYSPRP WinMain:Hit failure while pre-validate sysprep generalize internal providers; hr = 0x80310039
Desativando o BitLocker:
manage-bde -off C:
manage-bde -status
BitLocker Drive Encryption: Configuration Tool version 10.0.26100
Copyright (C) 2013 Microsoft Corporation. All rights reserved.
Disk volumes that can be protected with
BitLocker Drive Encryption:
Volume C: []
[OS Volume]
Size: 63,06 GB
BitLocker Version: None
Conversion Status: Fully Decrypted
Percentage Encrypted: 0,0%
Encryption Method: None
Protection Status: Protection Off
Lock Status: Unlocked
Identification Field: None
Key Protectors: None Found
Utilizamos o formato QCOW2 para criar uma cadeia de discos onde a imagem base permanece intocada.
win11-base.qcow2 ← Imagem Dourada (Somente Leitura)
├── lab01.qcow2 ← Overlay (Dados específicos do Lab 01)
├── lab02.qcow2 ← Overlay (Dados específicos do Lab 02)
└── lab-dev.qcow2 ← Overlay (Ambiente de Desenvolvimento)
O Windows 11 exige esses recursos, que são emulados via software no KVM/libvirt.
# Debian/Ubuntu
sudo apt install swtpm swtpm-tools
# Fedora/RHEL
sudo dnf install swtpm swtpm-tools
Adicione ao bloco <os> e insira o dispositivo TPM:
<os firmware='efi'>
<type arch='x86_64' machine='q35'>hvm</type>
<firmware>
<feature enabled='yes' name='enrolled-keys'/>
<feature enabled='yes' name='secure-boot'/>
</firmware>
<loader secure='yes'/>
</os>
<tpm model='tpm-crb'>
<backend type='emulator' version='2.0'/>
</tpm>
Compatibilidade: Verifique se as versões do libvirt e QEMU no host suportam essas funcionalidades.
Após o desligamento da VM pelo Sysprep, execute no host Linux:
virt-sparsify win11.qcow2 win11-base.qcow2qemu-img convert -O qcow2 -c win11-base.qcow2 win11-golden.qcow2chmod 444 win11-golden.qcow2 e opcionalmente chattr +i win11-golden.qcow2.Para criar um novo laboratório baseado na imagem dourada:
qemu-img create -f qcow2 -b win11-golden.qcow2 -F qcow2 lab01.qcow2
O arquivo unattend.xml automatiza as perguntas iniciais do Windows (idioma, usuário, senha).
Exemplo de uso:
Copie para C:\Windows\System32\Sysprep\unattend.xml antes do Sysprep ou use o parâmetro /unattend:C:\unattend.xml.
Dica: Utilize o Windows System Image Manager (WSIM) para criar arquivos de resposta complexos de forma gráfica.
Este script automatiza a criação do overlay e a definição da VM no libvirt.
#!/bin/bash
# Configurações básicas
BASE_DIR="/kvm/images"
BASE_IMG="${BASE_DIR}/win11-golden.qcow2"
LAB_NAME=$1
NEW_IMG="${BASE_DIR}/${LAB_NAME}.qcow2"
if [ -z "$LAB_NAME" ]; then echo "Uso: $0 nome-do-lab"; exit 1; fi
if ! command -v virt-install &> /dev/null; then echo "[!] virt-install não encontrado"; exit 1; fi
echo "[+] Criando overlay e VM..."
qemu-img create -f qcow2 -b "$BASE_IMG" -F qcow2 "$NEW_IMG"
virt-install \
--name "$LAB_NAME" \
--os-variant win11 \
--memory 4096 \
--vcpus 2 \
--disk path="$NEW_IMG" \
--tpm backend.type=emulator,backend.version=2.0,model=tpm-crb \
--boot firmware=efi \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--cpu host-passthrough \
--import --noautoconsole
echo "[✔] Laboratório $LAB_NAME criado com sucesso."
| Benefício | Impacto |
|---|---|
| Economia de Disco | 70–90% de redução no espaço ocupado. |
| Provisionamento | Novas VMs em segundos. |
| Reset Instantâneo | Basta deletar o overlay e recriá-lo. |
| Padronização | Todas as VMs partem da mesma base auditada. |
Nunca mova a imagem base. O caminho do backing file é gravado no overlay. Se precisar mover, use qemu-img rebase.
Esta estratégia garante um ambiente de laboratório Windows 11 escalável, performático e fácil de manter, seguindo as melhores práticas de virtualização corporativa com KVM/libvirt.