← Back to Engineering Blog
πŸ—“οΈ Jun 20, 2013 ⏱️ 3 min read

P2V Nightmares: Migrating Physical Linux Boxes to VMware ESXi

πŸŽ™οΈ Listen to Article READY
AI Audio Synthesis Narrator
Share Post:

β€œ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:

  1. Boot Rescue: Mounted the RHEL Rescue ISO and booted into rescue shell.
  2. Mount System Partitions:
    chroot /mnt/sysimage
  3. 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.

SKS

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.