As written in my previous blog post, I was about to install VMware ESXi 8 in order to do some compatibility testing of the check_esxi_hardware monitoring plugin. To speed up the process, I wanted to install ESXi 8 as a virtual machine. With previous ESXi versions, this has always worked without any hiccups. But with ESXi 8, it turns out, this is not as easy as it was before.
The previous ESXi versions were always installed on my main workstation using VMware Player. This is a lightweight and free Virtual Machine launcher, similar to VMware Workstation but with much less features. In my case I just want to spin up a VM, do some tests and shut down the VM again. For this purpose, the VMware Player software (currently using version 16.2.5 on my workstation) is just enough.
However when trying to install ESXi 8 (using the official ISO from VMware) as guest OS, the ESXi installer ran into a problem:
Now that's a first. The installer was unable to detect any network adapter and bailed out with an error:
No network adapters were detected. Either no network adapters are physically connected to the system, or a suitable driver could not be located. A third party driver may be required.
Ensure that there is at least one network adapter physically connected to the system before attempting installation. If the problem persists, consult the VMware Knowledge Base.
The installer leaves no other choice than to reboot the VM - and therefore launch the installer again, which will ultimately fail with the same error.
Of course I verified the VM settings and the network adapter is present. Unfortunately VMware Player doesn't have the possibility to emulate a specific virtual network card or change the driver.
From another VMware Player VM, running Debian 11, the guest OS detected the network adapter as Intel 82545EM:
ck@bullseye:~$ lspci | grep Ethernet
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Searching for this particular network card in the VMware compatibility list, shows something interesting:
This network card is, according to VMware, only compatible with ESXi 6.5 and 6.7. The newer releases, ESXi 7 and 8 are not listed. Although I can confirm that ESXi 7 U2 (and even ESXi 5) runs on VMware Player 16 without any hacks, maybe for ESXi 8 this is now really the end of the line.
Due to the fact that VMware Player cannot change how the virtual NIC is interpreted by the guest OS, I decided to switch to KVM/QEMU.
Once a new QEMU (K)VM was created using libvirt (virt-install) and using "fedora-unknown" as --os-variant value:
root@kvmhost ~ # virt-install --connect qemu:///system --virt-type kvm -n esxi8 --memory 8192 --vcpus 4 --cdrom /tmp/VMware-VMvisor-Installer-8.0-20513097.x86_64.iso --disk /dev/vgdata/esxi8 --network=bridge:virbr0 --graphics vnc,password=foobar,port=5915 --noautoconsole --os-variant fedora-unknown
After the VM was created, the VM's virtual hardware configuration was checked. What kind of network driver would be used by default?
root@kvmhost ~ # virsh dumpxml esxi8 | grep -A 5 "<interface"
<interface type='bridge'>
<mac address='52:54:00:76:71:60'/>
<source bridge='virbr0'/>
<target dev='vnet0'/>
<model type='virtio'/>
<alias name='net0'/>
The output shows, that the virtual network interface is using virtio as model (and driver).
But even with this setup, the ESXi installer failed to detect the network adapter. During a short moment of 1-2 seconds, a red error message would show up in the console:
Util: 1292: Unable to obtain a NIC MAC address for UUID generation. Will use a fake MAC. Please add/configure a supported NIC.
UWVMKSyscall: 2304: There are no supported network interfaces on this host
Right after this (quickly disappearing) red error text, the already known "No Network Adapters" message would show up. The ESXi 8 installation failed on this KVM, too!
Maybe ESXi 8 (and maybe earlier versions, too) doesn't support virtio devices? As the previous ESXi versions were installed on VMware Player and not as QEMU KVM, I wouldn't know.
But let's try to emulate a "physical" NIC this time and re-create the KVM with a "e1000e" virtual NIC:
root@kvmhost ~ # virt-install --connect qemu:///system --virt-type kvm -n esxi8 --memory 8192 --vcpus 4 --cdrom /tmp/VMware-VMvisor-Installer-8.0-20513097.x86_64.iso --disk /dev/vglxc/esxi8 --network=bridge:virbr0,model=e1000e --graphics vnc,password=foobar,port=5915 --noautoconsole --os-variant fedora-unknown
What does the virtual hardware configuration show this time for the virtual NIC:
root@kvmhost ~ # virsh dumpxml esxi8 | grep -A 5 "<interface"
<interface type='bridge'>
<mac address='52:54:00:71:29:d8'/>
<source bridge='virbr0'/>
<target dev='vnet0'/>
<model type='e1000e'/>
<alias name='net0'/>
Here we go, we now have a virtual NIC with a model type e1000e.
Starting the ESXi 8 installation once more and crossing fingers... and indeed! The ESXi setup continued and now shows the "Welcome to the VMware ESXi 8.0.0 installation" message!
Next step is to accept the EULA with [F11]:
And then chose the hard drive where to install ESXi:
Hold on a minute. Why is there no disk to chose from? Neither [F1] for Details, [F5] to refresh the list nor [ENTER] to continue would work in this situation. Oh come on!!!
A quick check on the virtual block device shows that virtual bus "virtio" is used in this KVM:
root@kvmhost ~ # virsh dumpxml esxi8 | grep -A 7 block
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/vglxc/esxi8'/>
<backingStore/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</disk>
Looks like ESXi really doesn't like virtio. Neither on virtual ethernet interfaces nor on virtual disks.
The first try was to re-create the ESXi8 KVM with "scsi" as block device bus (instead of the default virtio):
root@kvmhost ~ # virt-install --connect qemu:///system --virt-type kvm -n esxi8 --memory 8192 --vcpus 4 --cdrom /tmp/VMware-VMvisor-Installer-8.0-20513097.x86_64.iso --disk /dev/vglxc/esxi8,bus=scsi,target=sda --network=bridge:virbr0,model=e1000e --graphics vnc,password=foobar,port=5915 --noautoconsole --os-variant fedora-unknown
Looking at the virtual hardware definition now shows the disk target as sda and using the scsi bus:
root@kvmhost ~ # virsh dumpxml esxi8 | grep -A 7 block
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/vglxc/esxi8'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
However, even with this virtual hardware setup, the ESXi 8 installer was again unable to detect any disk.
But let's not give up just yet.
Running out of options, there are only the "sata" and "ide" bus' left to try. Let's go with the SATA bus first and re-create the ESXi8 VM:
root@kvmhost ~ # virt-install --connect qemu:///system --virt-type kvm -n esxi8 --memory 8192 --vcpus 4 --cdrom /tmp/VMware-VMvisor-Installer-8.0-20513097.x86_64.iso --disk /dev/vglxc/esxi8,bus=sata,target=sda --network=bridge:virbr0,model=e1000e --graphics vnc,password=foobar,port=5915 --noautoconsole --os-variant fedora-unknown
Checking out the virtual hardware specs of this VM confirms, that the sata bus is now used:
root@kvmhost ~ # virsh dumpxml esxi8 | grep -A 7 block
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/vglxc/esxi8'/>
<backingStore/>
<target dev='sda' bus='sata'/>
<alias name='sata0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
Launching the ESXi 8 installer once again...
YAYYY! The ESXi 8 installer finally detected the (SATA) disk as QEMU HARDDISK!
The installation can now continue with the keyboard layout:
Followed by setting the root password:
The next message is a warning that hardware virtualization was not detected:
In my case I can perfectly ignore this warning as I am not going to deploy any VMs on this (virtual) ESXi 8 server. I just want to start the ESXi 8 server and the CIM server to test monitoring compatibility with check_esxi_hardware, remember? Luckily the installation continues after this warning:
This was the last message requesting an input. After this the installation of ESXi 8 as guest OS started:
A few minutes later, the installation completed:
After a reboot, ESXi 8 correctly booted and showed the typical grey/yellow info screen on the console:
And by using the browser, the ESXi management can be successfully opened:
The root user can be used to log in to the user interface:
Finally: Success!
ESXi 8 seems to be harder to run as a virtual machine as previously working (virtual) hardware were removed from the ESXi compatibility and are no longer supported. Also all kinds of "virtio" driver/devices are not detected by ESXi 8. Depending on the Hypervisor software you use, you might have to change the types of virtual network card and virtual hard disk in order they can be recognized by the ESXi 8 installer.
Also note that ESXi is supposed to run on physical hardware. Running ESXi as a Virtual Machine is possible but should only be used for testing purposes.
YSN-BEN from morocco wrote on Nov 18th, 2024:
thank u for this information , because i have the same problem in instalation esxi on vmware workstation.
i have already change the nic intel e1000 from 1000e in the vmx file for the vm to e1000e and i am stuck in the disk not found so i read this information and changed to sata and it work but the same error u have in the last hahahahahah thats funny
Mario Pepinos from Quito-Ecuador wrote on Oct 30th, 2024:
I want to thank you that change of e1000 to e1000e has worked for setup exsi on kvm host.
best regards.
Mario
Claudio from Switzerland wrote on Jan 10th, 2024:
Edevald, yes, at the end I got it working but only by installing ESXi 8.0 in a Linux KVM. Was never able to get this working in VMware Player.
Edevald from Cotia - SP wrote on Jan 10th, 2024:
E ai amigo, conseguiu rodar o ESXi 8.0 na VM? Também estou com a mensagem: Unable to obtain a NIC MAC address for UUID generation. Will use a fake MAC.
AWS Android Ansible Apache Apple Atlassian BSD Backup Bash Bluecoat CMS Chef Cloud Coding Consul Containers CouchDB DB DNS Database Databases Docker ELK Elasticsearch Filebeat FreeBSD Galera Git GlusterFS Grafana Graphics HAProxy HTML Hacks Hardware Icinga Influx Internet Java KVM Kibana Kodi Kubernetes LVM LXC Linux Logstash Mac Macintosh Mail MariaDB Minio MongoDB Monitoring Multimedia MySQL NFS Nagios Network Nginx OSSEC OTRS Office PGSQL PHP Perl Personal PostgreSQL Postgres PowerDNS Proxmox Proxy Python Rancher Rant Redis Roundcube SSL Samba Seafile Security Shell SmartOS Solaris Surveillance Systemd TLS Tomcat Ubuntu Unix VMWare VMware Varnish Virtualization Windows Wireless Wordpress Wyse ZFS Zoneminder