Back to Blog
    Proxmox
    VMware
    Windows
    Migration

    Escaping VMware Isn't the Hard Part — Making Windows Boot on Proxmox VE Is

    February 3, 2026
    8 min read
    Leaving VMware turned out to be the easy decision. The licensing chaos made that part almost emotional. You sit in a meeting, stare at a spreadsheet, and suddenly the math just doesn't work anymore. So you do what a lot of infrastructure teams have been doing lately: you pick Proxmox, sketch a migration plan, and tell yourself it's basically a V2V problem with a different logo on the UI. That confidence lasts right up until your first Windows VM boots… and immediately faceplants into a blue screen. Not once. Not twice. Over and over again. What follows isn't a story about Proxmox being "bad" or Windows being "terrible" (even if it earns that reputation sometimes). It's about assumptions. VMware-trained instincts. And a handful of details that most migration guides politely skip because they're messy, unglamorous, and very capable of blowing up your weekend. ## Proxmox isn't the problem — your mental model is If you've lived in VMware land for years, your brain is wired a certain way. Storage controllers feel abstracted. Migrations feel transactional. You move bits, you power on, you move on. Proxmox doesn't play that game. Under the hood, it's unapologetically Linux, KVM, and explicit about how hardware is presented to guests. That's a good thing. It's fast, flexible, and honest. But it also means Windows is suddenly very aware of what it's booting from, and it does not like surprises. Linux VMs? They barely flinch. Most of ours came up on the first try, complained a little about network interfaces, and carried on with their day. Windows, especially older Windows, reacts more like you swapped the engine out of a car while it was on the highway. ## The first trap: cluster networking that almost works Before we even get to the blue screens, there's a networking mistake that keeps showing up in postmortems. On paper, a shared 10GbE link feels generous. Plenty of bandwidth. Plenty of headroom. Why not let cluster traffic, management, and migrations all ride together for the initial move? Because Proxmox clusters run on Corosync, and Corosync doesn't care about bandwidth. It cares about latency. And it really doesn't like it when latency suddenly spikes because you decided to saturate the link with a multi-terabyte migration. What happens next looks dramatic if you're not expecting it. Nodes start missing heartbeats. The cluster assumes something is wrong. Fencing kicks in. Machines reboot themselves because they think they've been isolated. From the outside, it looks like Proxmox panicking. In reality, it's doing exactly what it's designed to do. The fix isn't exotic. Physically separate the traffic or, at the very least, put migrations on their own VLAN with real isolation. Once we stopped blasting data over the same path as the heartbeat, the random reboots vanished. Lesson learned: "recommended" in the docs doesn't mean "optional" when clusters are involved. ## Then came Windows. And the BSOD loop. This is the part everyone whispers about. You import a Windows VM. You click Start. The boot screen flashes. And then: INACCESSIBLE_BOOT_DEVICE. The reason is painfully simple once you see it. VMware presents storage using controllers Windows already knows how to boot from. Proxmox doesn't. It expects you to use VirtIO for performance, and Windows will absolutely refuse to boot from a controller it hasn't marked as boot-critical. Installing drivers isn't enough. That's the gotcha. You can run the VirtIO installer all day long, but if Windows never sees a VirtIO disk while it's alive, it often won't flag the driver to load during the boot phase. After migration, Windows wakes up, looks for the old controller, doesn't find it, and gives up. Cue the blue screen. ## The dumb trick that actually works The most reliable fix ended up being inelegant, slightly absurd, and completely deterministic. Before migration, add a tiny dummy disk to the VM using a VirtIO SCSI controller. One gigabyte is plenty. The disk doesn't matter. The controller does. That single act forces Windows to enumerate the hardware, load the driver, and mark it as required at boot. Now the driver isn't just installed. It's trusted. After migration, Windows boots cleanly because it already knows what it's looking at. People online argue about DISM, offline registry injection, scripting the driver store, and all kinds of clever automation. Some of it works most of the time. This works almost every time, especially on older builds of Windows Server that have seen years of patches and upgrades. It's ugly. It's boring. And it saves hours. ## Why the import wizard isn't magic Proxmox's native import wizard is genuinely good. For small to medium VMs, it's close to a one-click experience. Web servers, app nodes, utility boxes — no drama. The trouble starts when disks get big. Really big. Once you cross into multi-terabyte territory, especially with sparse VMDKs backing databases, the wizard slows to a crawl. It spends time translating empty space that nobody actually needs. That's where old-school tools quietly win. For the largest systems, we went offline and used Clonezilla to copy only the used blocks. Same 10GbE link, radically different experience. Less waiting, fewer surprises. Others swear by Veeam for this step, especially if it's already in the environment. The point isn't the tool. It's knowing when the shiny UI stops being your friend. ## Windows migrations aren't just data moves This is the mindset shift that matters most. Moving Windows between hypervisors isn't just copying disks. It's changing virtual hardware in ways Windows absolutely notices. Storage controllers. Boot order. Driver load timing. Registry flags you never think about until they break everything. VMware insulated admins from most of that for years. Proxmox doesn't, and that's not a flaw. It just means the migration phase demands more respect. Once Windows is up and stable on Proxmox, it's solid. Performance is excellent. VirtIO shines. The problems are front-loaded into the cutover window, where every failure feels louder and more stressful than it probably should. ## The quiet relief of a clean first boot There's a specific moment during these migrations that sticks with you. You click Start. The console opens. The Windows logo appears. The spinning dots keep spinning. No blue screen. No automatic reboot. Eventually, the login prompt shows up like nothing dramatic ever happened. That's when you finally breathe. At that point, removing VMware tools, cleaning up devices, and tuning performance feels routine. The hard part is already behind you. ## Proxmox isn't harder — it's more honest Escaping VMware isn't the technical challenge people think it is. The real challenge is unlearning habits that VMware made feel safe. Proxmox exposes reality. Clusters need low-latency links. Windows needs to see its boot controller before it agrees to trust it. Big disks need the right migration tool. None of that is exotic. It's just easy to underestimate until you're staring at a blue screen at 2 a.m. If there's one takeaway, it's this: plan for Windows first. Treat it like the fragile, stubborn guest it is. Do that, and the rest of the migration suddenly feels a lot less scary. And once you're on the other side, you might realize the hardest part wasn't leaving VMware at all. It was convincing Windows to come along for the ride.