WinXP conversion from esx to pve refuses to boot

Elleni

Well-Known Member
Jul 6, 2020
207
11
58
52
We are in the process of replacing our esxi Servers with ProxMox, and I have converted dozens of linux and Windows VMs. When it comes to Windows everything works fine from win7 onwards, but we have two winXP guests, that need to be around for archive just in case.

The error is always the same. Black Window stating Booting from Harddisk...
Error at loading operating system

The guest is successfully running on esxi and on vmware workstation.

Things I have tried:

- import by adding esxi Server as storage to a pve node and by import button/wizard
- tried different disktypes as destination, qcow2, zfs blockdevice, even as vmdk
- tried after import as ide, as sata and as scsi
- Machine: i440fx different versions and also q35 different versions
- tried all the available scsi controllers in hardware tab
- tried some different cpu types
- tried disabling the kvm hardware virtualization option
- tried SeaBIOS and OVMF
- As nothing worked while it does on esx and vmware workstation, I then went on and booted from rescuezilla iso on the esxi Server and created an image which I then restored on a newly created VM on ProxMox
-added the winXP disk as secondary disk to a win10 vm and downloaded and placed 2 versions of mergeIDE from :
https://www.andysblog.de/windows-mergeide-v3-0 and
https://pve.proxmox.com/wiki/File:Mergeide.zip?ref=bra.live
- booted the winXP VM and executed those variants of mergeide
- then re-exported

Nothing helped so far. Always the same error, right after bios, before even loading anything also no bluescreen as it happens even before that - as if the mbr is not found or something

Please tell me what more I can provide to help you find the problem and fix this. I am running an up-to-date proxmox 9 based on debian trixie and am willing to provide an info needed and try everything you suggest.
 
Last edited:
works fine from win7 onwards, but we have two winXP guests
Hi @Elleni ,

PVE is based on the QEMU/KVM virtualization stack. While the Proxmox team makes some enhancements, the fundamentals of QEMU virtualization are universal.

Just as ESXi uses VMware Tools for guest integration, QEMU uses VirtIO tools/drivers. These are typically developed by OS maintainers, except in the case of Microsoft. Red Hat has long been a major contributor to QEMU/KVM (and still is after the acquisition) and is the primary backer of VirtIO drivers for Windows variants. In general, for a stable Windows VM you’ll want VirtIO drivers installed along with the appropriate hardware controllers. Often this must be done before transferring the VM to a KVM host (i.e. while it’s still running on ESXi).

You may know all of this already, but your post doesn’t mention VirtIO at all. Whether VirtIO packages still include XP drivers, I don’t know. If not, you’d need to backtrack to an older package from the time before XP support was dropped (given XP has been EOL for 11 years).

This article may help a bit (though it’s not XP-related):
https://kb.blockbridge.com/technote...part-1.html#windows-server-2022-driver-status

If you still have XP installation media, you might want to try a fresh install to test different controllers and drivers. That at least will tell you what combinations are workable.


Blockbridge : Ultra low latency all-NVME shared storage for Proxmox - https://www.blockbridge.com/proxmox
 
  • Like
Reactions: Elleni
Hi bbgeek17 and thanks for you taking the time to reply.

You are right, I didnt mention it as my procedure for migrating all those other vms was to first boot with sata or ide attached disk and only then on the proxmox host started vm add a dummy network device and scsi disk to then install the appropriate virtio drivers, which worked fine on all different os besides winxp. I dont have a winxp iso but will look around although it wont help me much I guess as what I need is porting the winxp vm (and the there installed tools) to proxmox.

Also I am not sure if installing the virtio drivers on the old hypervisor (esx or vmware workstation) will help, as firstly the devices will not be available neither on esxi server nor on the vmware workstation. And then again I dont have a bluescreen after windows starts loading, but it seems the problem is earlier when it tries to find the mbr right after bios. I will still take into consideration what you wrote and test further and also check the article you linked. Thanks.

Btw - I am not in front of the pc right know, but I did search an read about virtio version supporting winxp and tried with those older iso too.
 
Last edited:
And then again I dont have a bluescreen after windows starts loading, but it seems the problem is earlier when it tries to find the mbr right after bios.
Digging deep in the memory archives, when/if you have the ISO, you may be able to do a recovery (safe?) boot to see if the disk/installation is visible. You may still need to provide proper drivers/controllers. You may then be able to "repair" mbr/boot.

You can also try to change QEMU version of the VM, perhaps a lower version would be more agreeable.


Blockbridge : Ultra low latency all-NVME shared storage for Proxmox - https://www.blockbridge.com/proxmox
 
  • Like
Reactions: Elleni
I know this may be meaning less but here is the config of an xp vm that boots. I have not started it for a long time. Something has changed because it is not activated anymore. But it does boot and get to the login screen. For what it may show.
Code:
root@pve:~# qm config 107 --current
agent: 1,fstrim_cloned_disks=1
args: -acpitable
bios: seabios
boot: order=virtio0;ide2;net0
cores: 4
cpu: host,flags=+pdpe1gb;+aes
hotplug: 0
ide2: none,media=cdrom
machine: pc-i440fx-6.1
memory: 3072
name: xpavocent
net0: virtio=0A:FD:A2:00:05:F0,bridge=vmbr0,mtu=1500,queues=4
numa: 1
ostype: wxp
rng0: source=/dev/hwrng
scsihw: virtio-scsi-single
smbios1: uuid=xxx...
sockets: 1
virtio0: R10-4xssd:vm-107-disk-0,aio=native,discard=on,iothread=1,size=15G
virtio1: R1x2x1dot5TB:107/vm-107-disk-0.qcow2,aio=native,discard=on,iothread=1,size=1G

Good luck

PS: Driver disk virtio-win-0.1.271.iso still has xp drivers.
 
Last edited:
  • Like
Reactions: Elleni
Title should be edited, as problem is about Windows "conversion",
which is a problem since Windows exists, even before virtualization.
Windows "conversion" is always a "YMMV", because it doesn't like swapping motherboard/cpu and mainly disk controller.
Each hypervisor has their own hardware which differs like bare metal,
it's not specific to PVE.
 
If memory serves, Windows XP allows a repair install. just boot the windows xp iso (sata/ide host bus for the existing virtual disk) and reinstall.
Its also possible to use universal recovery from Acronis to reset an install using new hardware.
 
  • Like
Reactions: Elleni
Digging deep in the memory archives, when/if you have the ISO, you may be able to do a recovery (safe?) boot to see if the disk/installation is visible. You may still need to provide proper drivers/controllers. You may then be able to "repair" mbr/boot.

You can also try to change QEMU version of the VM, perhaps a lower version would be more agreeable.


Blockbridge : Ultra low latency all-NVME shared storage for Proxmox - https://www.blockbridge.com/proxmox
Thanks will organize a winxp iso and try although a colleague of mine already tested booting in a winxp iso and fixmbr or install over but apparently didnt help. Will report back when I find time to try myself. Thanks
 
I know this may be meaning less but here is the config of an xp vm that boots. I have not started it for a long time. Something has changed because it is not activated anymore. But it does boot and get to the login screen. For what it may show.
Code:
root@pve:~# qm config 107 --current
agent: 1,fstrim_cloned_disks=1
args: -acpitable
bios: seabios
boot: order=virtio0;ide2;net0
cores: 4
cpu: host,flags=+pdpe1gb;+aes
hotplug: 0
ide2: none,media=cdrom
machine: pc-i440fx-6.1
memory: 3072
name: xpavocent
net0: virtio=0A:FD:A2:00:05:F0,bridge=vmbr0,mtu=1500,queues=4
numa: 1
ostype: wxp
rng0: source=/dev/hwrng
scsihw: virtio-scsi-single
smbios1: uuid=xxx...
sockets: 1
virtio0: R10-4xssd:vm-107-disk-0,aio=native,discard=on,iothread=1,size=15G
virtio1: R1x2x1dot5TB:107/vm-107-disk-0.qcow2,aio=native,discard=on,iothread=1,size=1G

Good luck

PS: Driver disk virtio-win-0.1.271.iso still has xp drivers.
Thanks for providing those informations. Will try to adapt and report back
 
Title should be edited, as problem is about Windows "conversion",
which is a problem since Windows exists, even before virtualization.
Windows "conversion" is always a "YMMV", because it doesn't like swapping motherboard/cpu and mainly disk controller.
Each hypervisor has their own hardware which differs like bare metal,
it's not specific to PVE.
done - although as written above from win7 onwards I had not problems at all to port windows vms to proxmox. Those last two winxp I have to make available still giving me some headache but I ll try and report back.
 
I know this may be meaning less but here is the config of an xp vm that boots. I have not started it for a long time. Something has changed because it is not activated anymore. But it does boot and get to the login screen. For what it may show.
Code:
root@pve:~# qm config 107 --current
agent: 1,fstrim_cloned_disks=1
args: -acpitable
bios: seabios
boot: order=virtio0;ide2;net0
cores: 4
cpu: host,flags=+pdpe1gb;+aes
hotplug: 0
ide2: none,media=cdrom
machine: pc-i440fx-6.1
memory: 3072
name: xpavocent
net0: virtio=0A:FD:A2:00:05:F0,bridge=vmbr0,mtu=1500,queues=4
numa: 1
ostype: wxp
rng0: source=/dev/hwrng
scsihw: virtio-scsi-single
smbios1: uuid=xxx...
sockets: 1
virtio0: R10-4xssd:vm-107-disk-0,aio=native,discard=on,iothread=1,size=15G
virtio1: R1x2x1dot5TB:107/vm-107-disk-0.qcow2,aio=native,discard=on,iothread=1,size=1G

Good luck

PS: Driver disk virtio-win-0.1.271.iso still has xp drivers.
Thanks again - tried with options you have provided, which were missing, and besides the line args: -acpitable which didnt let me start the vm and proxmox said:
Code:
kvm: -acpitable: requires an argument
TASK ERROR: start failed: QEMU exited with code 1

I tried with the ones, I didnt have, like machine version pc-i440fx-6.1, numa: 1 and rng0: source=/dev/hwrng with no luck.
 
Not sure if this helps but for Windows XP to boot you may have to use mergeide.reg

See the advanced migration techniques
Hi MarkusKo,

as mentioned in the opening post, I also tried with two different versions of mergeide.reg even with the one exact version you added a link for without success. I also read through advanced migration techniques and pretty mucht tried everything, for ex. imaging with rescuezilla instead of clonezilla.

Always with the same result.
 
Tried with WinXP iso - booted and issued fixmbr, but still getting message: error at loading operating system.
 
Will try to install from scratch on the pve guest to see if it boots, but how could I get the setup from the esx server disk - is there a way with dd somehow?
 
As @alexskysilk said,
Have you tried, with hdd as ide,
booting from xp iso to install over existing ?
it's often required for pre Windows Vista
I did firstly tried with fixmbr - you mean install over it, will do this right now as next step. Thanks

Reinstall as repair option didnt help, as it resultet in the same error; next step. Complete new install on the disk/pve guest. I will first try if it works to leave the install and resize the disk a bit more than double the space and install it besides the old install and as last step reinstall a completely new xp by deleting the partition and recreating a new one.
 
Last edited:
Re-install besides the original setup changed the boot message:

It now reads:
Booting from Harddisk... then nothing more following.

Here is the current vm config:
Code:
bios: seabios
boot: order=ide0;ide2
cores: 2
cpu: x86-64-v2-AES
ide0: grpz-pvedata-zfs:vm-114809955-disk-0,cache=writeback,discard=on,size=90G,ssd=1
ide2: none,media=cdrom
machine: pc-i440fx-10.0+pve1
memory: 2048
meta: creation-qemu=10.0.2,ctime=1758268206
name: zz111175200WinXPVMName
ostype: wxp
smbios1: uuid=564da889-d581-4bd7-01dc-ddf27144caff
sockets: 1
vmgenid: 0fcf1f0c-e8d3-4638-a6af-2abdc7e6051b
 
Last edited: