P2V Nightmares: Migrating Physical Linux Boxes to VMware ESXi
βI watched the progress bar crawl to 98%. It stood there for an eternity before spouting a generic βFailed to convert diskβ error.β
If you worked in IT infrastructure during the early virtualization boom, you remember the promise of P2V (Physical-to-Virtual).
The vendor brochures promised seamless migrations. Point the vCenter Converter tool at your old physical server, click βNext,β and 30 minutes later your physical hardware is a virtual machine.
Then came the reality: The Legacy Billing Server.
The Patient
This physical server was the financial heartbeat of our ISP operation at Net4 India. It ran a customized build of Red Hat Enterprise Linux (RHEL 4) with a non-standard kernel.
Nobody wanted to touch it. But hardware support was expiring, forcing us to virtualize it onto our VMware ESXi 4.1 cluster.
The 98% Kernel Panic
I ran the conversion wizard. The block-level disk copy completed after 4 hours.
However, when I powered on the newly created Virtual Machine, it failed to boot into the OS. The console spat out a Kernel Panic:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
<0>Rebuilding initrd...
<0>Kernel panic - not syncing: Attempted to kill init!
[!IMPORTANT] A kernel panic on initial boot after P2V indicates that the Linux initial RAM disk (
initrd) lacks the virtual storage controller drivers required by VMware ESXi.
The Surgery: Rebuilding initrd in Rescue Mode
The physical server used a hardware RAID controller (megaraid_sas). The virtual machine presented a virtual LSI Logic Parallel SCSI adapter (mptspi).
When the virtualized Linux kernel booted, it attempted to load the physical RAID driver, failed to find the disk controller, and panicked.
I performed emergency kernel modifications:
- Boot Rescue: Mounted the RHEL Rescue ISO and booted into rescue shell.
- Mount System Partitions:
chroot /mnt/sysimage - Rebuild Initrd with VMware SCSI Driver:
# Force initrd to include the mptspi virtual SCSI driver mkinitrd -v -f --with=mptspi /boot/initrd-2.6.9-89.EL.img 2.6.9-89.EL
# Output from rescue console:
Adding module scsi_mod
Adding module sd_mod
Adding module mptbase
Adding module mptscsih
Adding module mptspi [SUCCESS]
I unmounted the ISO and rebooted the VM. The VMware BIOS screen flashed, the kernel initialized, and the login prompt appeared cleanly: Welcome to Red Hat Enterprise Linux.
The Verdict
Key Takeaway
Virtualization Abstractions Require Low-Level Driver Alignment.
Hypervisors abstract physical hardware, but guest operating systems still require matching kernel modules to communicate with virtual devices. When performing P2V migrations, always verify initrd storage modules before cutover.
Sachin Kumar Sharma
Associate Director (Infrastructure & Cloud Architecture Strategy) | 20+ Yrs Exp
Architecting resilient multi-cloud enterprise landing zones, SDN overlay fabrics, DevSecFinOps automation pipelines, and autonomous Agentic AI platforms.