A central hub of Azure cloud migration services and tools to discover, assess, and migrate workloads to the cloud.
Hello Jose Moreno, we understand that you are trying to discover an Ubuntu 22.04 VM on Hyper-V using Azure Migrate, and facing two separate issues:
- Hyper-V appliance discovery fails Because Hyper-V cannot retrieve the VM’s IP address.
- Azure Migrate Collector discovery fails because of the error “Failed to fetch BIOS GUID”. Even though manual commands (
dmidecode,product_uuid) work.
Hyper-V Appliance Issue (IP Not Detected): Hyper-V depends on the KVP (Key-Value Pair Exchange) daemon (hv_kvp_daemon) inside the Linux VM to report the IP address. If this service is not running or not functioning correctly, the Hyper-V host cannot retrieve the IP. Azure Migrate queries Hyper-V, and if the host cannot obtain the IP via KVP, discovery fails.
Azure Migrate Collector Issue (BIOS GUID Failure): The Azure Migrate Collector executes commands like dmidecode via non-interactive SSH. Even if the command works manually, it can fail during automation if:
- The
sudoersconfiguration does not allowpasswordlessexecution (NOPASSWD) - The exact binary path is not specified
- The system enforces
requiretty, preventing non-interactivesudoexecution As a result, the collector cannot retrieve the BIOS GUID and discovery fails.
To fix Azure Migrate Collector:
Configure sudoers correctly: Run the below command
sudo visudo
Add exactly:
jose ALL=(ALL) NOPASSWD: /usr/sbin/dmidecode, /bin/cat /sys/class/dmi/id/product_uuid Defaults:Jose !requiretty
Verify paths
which dmidecode
which cat
Should return:
- dmidecode >
/usr/sbin/dmidecode - cat >
/bin/cat
Test non-interactive execution: From another machine (simulate collector):
ssh jose@vm-ip "sudo /usr/sbin/dmidecode -s system-uuid"
Must return UUID without prompting password
Restart services
sudo systemctl restart ssh
Revalidate in Azure Migrate Collector: Run the validation again it should now pass.
To fix Hyper-V Discovery (Optional):
Ensure KVP daemon is running: This ensures the Hyper‑V Key‑Value Pair daemon is running, which is what reports IP addresses back to the host.
sudo systemctl status hv-kvp-daemon
If not:
sudo systemctl restart hv-kvp-daemon
Confirm synthetic NIC: you should see Microsoft Hyper-V Network Adapter. If not, the VM may be using a legacy NIC, which doesn’t support IP reporting.
lspci | grep -i ethernet
Should show: Microsoft Hyper-V Network Adapter
Refresh DHCP lease: Forces the VM to renew its IP assignment.
sudo dhclient -v
Reboot VM: Hyper-V often updates IP only after reboot.
The recommendation to Use Azure Migrate Collector (agentless). Fix sudoers with exact command paths + NOPASSWD + no TTY requirement. Do not rely on Hyper-V appliance for Linux discovery, It is inherently unreliable for IP detection on newer Linux distros
Here are some useful documents: Discover physical servers with Azure Migrate discovery and assessment - Azure Migrate | Microsoft Learn