hyper2kvm

Installation Guide (Fedora)

This document describes a clean, RPM-first installation on Fedora for VMware β†’ KVM workflows, covering both:

Control plane

Data plane


Philosophy

This project is intentionally not β€œclick migrate and pray”.

The goals:

If something can fail at runtime, we make it impossible to reach that state.


🧩 1. Supported Platform


2. Required System Compatibility Libraries (Install First)

Modern Fedora intentionally removes legacy libraries that ⚠️ VMware-provided binaries still depend on.

Install these before any VMware tooling:

sudo dnf install -y \
  libxcrypt-compat \
  libnsl

Why this matters

These packages provide:

Installing them up front ensures you never see errors like:

error while loading shared libraries: libcrypt.so.1: cannot open shared object file

Optional sanity check:

ldconfig -p | grep libcrypt.so.1

🟒 If it shows up, you’re future-proofed.


All required Python libraries are available as official Fedora RPMs and should be installed system-wide.

Install

sudo dnf install -y \
  python3-rich \
  python3-termcolor \
  python3-watchdog \
  python3-pyyaml \
  python3-requests \
  python3-pyvmomi

What gets installed

Fedora automatically pulls safe dependencies such as:

🚫 No pip. 🚫 No wheels. 🚫 No ABI drift.


βœ… 4. Verify Python Installation (System Python)

Run the following using system Python (no virtualenv):

python3 - <<'EOF'
import rich
import termcolor
import watchdog
import yaml
import requests
import pyVmomi

print("βœ… All system RPM imports OK")
print("pyVmomi version:", pyVmomi.__version__)
EOF

Expected:


🧭 5. Control Plane: govc (govmomi CLI)

govc is the preferred open-source control-plane tool for vSphere:

πŸ“₯ Install govc

Download from:

πŸ‘‰ https://github.com/vmware/govmomi/releases

Example:

curl -LO https://github.com/vmware/govmomi/releases/download/v0.44.0/govc_Linux_x86_64.tar.gz
tar -xzf govc_Linux_x86_64.tar.gz
sudo install -m 0755 govc /usr/local/bin/govc

Verify

which govc
govc version

🀝 How it fits

They are complementary, not redundant.


6. Optional Tool: VMware OVF Tool (ovftool)

VMware OVF Tool is an optional, proprietary utility used for:

Policy in this project:


πŸ“₯ 6.1 Download OVF Tool (ZIP)

Download the Linux ZIP archive from Broadcom:

πŸ‘‰ https://developer.broadcom.com/tools/open-virtualization-format-ovf-tool/latest

File name will resemble:

VMware-ovftool-4.x.y-lin.x86_64.zip

πŸ—‚οΈ 6.2 Install ovftool (ZIP-based, Deterministic)

Extract directly under /opt:

sudo mkdir -p /opt/ovftool
sudo unzip VMware-ovftool-*-lin.x86_64.zip -d /opt/ovftool
sudo chmod -R a+rX /opt/ovftool

Resulting layout:

/opt/ovftool/
  β”œβ”€β”€ ovftool
  β”œβ”€β”€ ovftool.bin
  β”œβ”€β”€ lib/
  └── env/

βœ” No system pollution βœ” No installers βœ” Fully auditable


πŸ”— 6.3 Add ovftool to PATH

sudo ln -s /opt/ovftool/ovftool /usr/local/bin/ovftool

Verify:

ovftool --version

Expected:

VMware ovftool 4.x.y (build-xxxxxx)

Because compatibility libraries were installed first, 🟒 no loader errors will occur.


7. Data Plane: VMware VDDK (libvixDiskLib)

For high-performance VMDK access (snapshots, block-level reads), install VMware VDDK.

Fedora does not ship VDDK. This is expected.

πŸ“₯ Download

πŸ‘‰ https://developer.broadcom.com/sdks/vmware-virtual-disk-development-kit-vddk/latest (Tested with VDDK 9.0.0.0)


πŸ—‚οΈ Install Layout

sudo mkdir -p /opt/vmware
sudo tar -xzf VMware-vix-disklib-*.tar.gz -C /opt/vmware

Result:

/opt/vmware/vmware-vix-disklib/
  β”œβ”€β”€ bin/
  β”œβ”€β”€ lib64/
  β”‚   β”œβ”€β”€ libvixDiskLib.so
  β”‚   β”œβ”€β”€ libvixDiskLib.so.7
  β”‚   β”œβ”€β”€ libvixDiskLib.so.6
  β”‚   └── libvixDiskLib.so.5

πŸ”— Register Libraries

echo "/opt/vmware/vmware-vix-disklib/lib64" | sudo tee /etc/ld.so.conf.d/vmware-vddk.conf
sudo ldconfig

Verify:

ldconfig -p | grep vixDiskLib

🌍 8. Environment Variables (When Required)

Some workflows require explicit paths:

export VIXDISKLIB_DIR=/opt/vmware/vmware-vix-disklib
export LD_LIBRARY_PATH=/opt/vmware/vmware-vix-disklib/lib64:$LD_LIBRARY_PATH

Persist if needed:

sudo tee /etc/profile.d/vddk.sh <<'EOF'
export VIXDISKLIB_DIR=/opt/vmware/vmware-vix-disklib
export LD_LIBRARY_PATH=/opt/vmware/vmware-vix-disklib/lib64:$LD_LIBRARY_PATH
EOF

9. Design Rationale

This mirrors real production VMware tooling layouts.


πŸŽ‰ 10. Summary

βœ” System compatibility libraries installed first βœ” Fedora RPMs for all Python dependencies βœ” pyvmomi verified on system Python βœ” govc installed for control-plane operations βœ” ovftool ZIP installed cleanly under /opt βœ” VDDK installed and registered for data-plane access