Troubleshooting Windows 7 Installation Hang at “Starting Windows” in Proxmox 4.2 KVM Environment


2 views

When attempting to install Windows 7 (x64) in a Proxmox VE 4.2 KVM virtual machine, the installation process consistently hangs indefinitely at the "Starting Windows" screen. The VM configuration follows Proxmox's recommended best practices:

# Example VM configuration (extract from /etc/pve/qemu-server/100.conf)
args: -machine pc-i440fx-2.1,accel=kvm
boot: cd
cores: 2
cpu: host
memory: 4096
name: win7-test
net0: virtio=XX:XX:XX:XX:XX:XX,bridge=vmbr0
ostype: win7
scsi0: local-lvm:vm-100-disk-0,cache=writeback,discard=on,size=50G
scsihw: virtio-scsi-pci
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sockets: 1
vga: std

Several factors were examined to isolate the root cause:

  • Verified VT-x/AMD-v enabled in BIOS (grep -E '(vmx|svm)' /proc/cpuinfo)
  • Confirmed working Windows 7 ISO MD5 matches known-good copies
  • Tested both IDE and VirtIO storage controllers
  • Attempted various CPU flags combinations

The breakthrough came when modifying the machine type and CPU configuration:

# Modified VM configuration that resolved the issue
args: -machine pc-i440fx-1.4,accel=kvm
cpu: kvm64,+pdpe1gb
balloon: 0
vmgenid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

After successful installation, implement these tweaks for optimal performance:

# Add to VM configuration for Windows guest optimization
cpu: host
args: -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time
machine: q35
bios: ovmf
efidisk0: local-lvm:vm-100-disk-1,size=4M

For complete VirtIO driver integration:

  1. Mount virtio-win ISO during Windows setup
  2. Load storage driver when prompted
  3. Post-installation, install remaining VirtIO drivers:
    • NetKVM
    • Balloon
    • QXL (for SPICE)
    • Guest Agent

Key observations from debugging sessions:

Parameter Effect
machine 1.4 vs 2.1 Older machine type resolved hang
pdpe1gb CPU flag Required for memory > 4GB
balloon=0 Disables memory ballooning during install

For real-time monitoring during installation:

# Monitor VM performance
qm terminal 100
dmesg -w
vmstat 1

When deploying Windows 7 in a Proxmox VE 4.2 environment running on Debian Jessie, many users encounter a freeze at the "Starting Windows" phase during installation. This occurs despite using verified ISOs and following Proxmox's official documentation.

The installation process exhibits these specific behaviors:

  • Progress bar completes "Windows is loading files..."
  • Transition to "Starting Windows" screen
  • No further disk I/O or CPU activity (verified via qm monitor <vmid>)
  • No graphical elements appear (colored logo/animation)

Through testing multiple configurations, these VM settings proved essential:

qm set <vmid> --cpu cputype=kvm64,+aes,+ssse3,+sse4.1,+sse4.2,+popcnt
qm set <vmid> --machine pc-q35-2.4
qm set <vmid> --args '-no-kvm-irqchip'

The default SATA controller configuration causes compatibility issues. Use this alternative setup:

qm set <vmid> --sata0 none
qm set <vmid> --ide2 local:iso/Win7_ISO.iso,media=cdrom
qm set <vmid> --virtio0 local-lvm:32

For immediate resolution, follow this procedure:

  1. Create VM with these parameters:
    qm create <vmid> --name "Win7-Proxmox" --memory 2048 --cores 2
    qm set <vmid> --net0 virtio,bridge=vmbr0
    qm set <vmid> --bootdisk virtio0
    qm set <vmid> --ostype win7
  2. Import the modified storage controller configuration shown above
  3. Add the CPU flags and machine type parameters

After successful installation, enhance performance with:

qm set <vmid> --cpu host
qm set <vmid> --args '-device virtio-balloon-pci,id=balloon0'

If problems persist, consider injecting these custom KVM parameters via the VM configuration file (/etc/pve/qemu-server/<vmid>.conf):

args: -machine pc-q35-2.4 -global kvm-pit.lost_tick_policy=discard -no-kvm-pit-reinjection