Update 19th February 2018:
This article has had a lot more attention than I ever expected! This has bought to light several issues with the process as well as changes made to Hyper-V and ESXi that break the process. You could wade through all 256 comments and assemble the corrections yourself, but user @Gambit has helpfully done this for me! So I’ve included the summary here:
@Tom Watson: Adding a line to /etc/vmware/config with vmx.allowNested = “TRUE”
Since all VM’s will be running nested (whole point of article) this is a must if you want them to start! The alternative is adding this line to every VMX file for each guest, Toms solution was much more elegant.
@burnett437: Configure ESXi Management vSwitch “accept” “promiscuous mode”. Apparently this was a known issue even in nested ESXi 5.5. While the host network will operate for a while without problem, the “promiscuous mode” policy will eventually be tripped and you wont be able to talk to the host at random times (I originally thought it was stability issues with the Tulip driver). Now I think this has to due with the nature of nested virtual switches (a VMWare vSwitch insude of a Hyper-V Virtual Switch). When this happens I found you could “down/up” the management vnicX to get it back, but just set the setting not worry about it.
@me: Network threat detection doesn’t like nested virtual switches either. My Symantec Endpoint Client would occasionally block traffic coming from my local NIC (vSphere Client/vSphere Converter) to this nested Host (Windows Firewall did NOT seem to care), but SEP occasionally tripped cause all “suspicious” addressing to the nested host.
@me: Use vSphere converter for guest images coming from other VMWare products….duh. ESXi doesn’t like split vhdk’s, guest won’t boot. This is a beginner mistake, but this article is for Hyper-V admins that may not know the subtle nuances between VMWare products.
@RichMD: I like the idea of hardware pass-through on the NIC. I may tinker with this because it may resolve several issues, not just ESXi v6.5 NIC blacklist issue.
Theoretically, passing the physical NIC directly to the nested ESXi Host could/should resolve the “promiscuous mode”, “Network Threat Protection” and even the “Half Duplex Legacy Adapter Requirement” (very slow network performance) problems. I may revisit this…I think my server board has a 2nd NIC I could try this with if I get the time.
The original article starts here:
Recently I’ve been playing around with the new Hyper-V Nested Virtualization feature within Windows 10 (build 10565 and greater) and Windows Server 2016. It is pretty cool to be able to create virtualized lab environments running that contain Hyper-V clusters. But what if we want a lab that contains VMWare ESXi Hypervisors running on Hyper-V host. I couldn’t find the process documented anywhere and I couldn’t even confirm if it should be possible. But after lots of asking a lot of annoying questions – thanks Adam Burns – Googling and hair pulling I managed to get it going:
So this seems like a good topic for a blog post.
What You’ll Need
You are going to need a few things to get this working:
- A Hyper-V host running on Windows 10 (built 10565 or greater) or Windows Server 2016 TP4.
- Enable-NestedVM.ps1 – A PowerShell script for enabling Nested Virtualization in a Hyper-V VM. Click here to get the file from the Microsoft team on GitHub.
- A VMWare account – just sign up for one here if you don’t already have one.
- VMWare PowerShell CLI installed – I used 6.3 release 1 that I downloaded from here.
- ESXi-Customizer-PS.ps1 – A PowerShell script for injecting network drivers into an ESXi 5.x/6.x ISO. I downloaded it from here.
I suggest you download all of the above items to a working folder – I called mine d:\ESX-In-Hyper-V, so these instructions will reflect that, but you can call your folder what ever you like.
You should end up with a folder containing these files:
And before you ask: No, you don’t need an VMWare ESXi 6.0 ISO – this will get downloaded and produced for us.
The Process
Part 1 – Prepare an ESXi 6.0 ISO with Network Drivers
The biggest problem I ran into when trying to install ESXi onto Hyper-V was that the ESXi kernel doesn’t come with drivers for the Microsoft Virtual Network Adapter or the Microsoft Legacy Network Adapter (emulates a DECchip 21140). So you’ll need to inject these drivers into the VMWare ESXi 6.0 ISO. Luckily there is a script available and the appropriate drivers DECchip 21140 (called “net-tulip” for some reason) that makes this process a breeze:
- Install WMWare PowerCLI.
- Open a PowerShell console.
- Enter the following commands:
CD D:\ESX-In-Hyper-V\ .\ESXi-Customizer-PS-v2.4.ps1 -v60 -vft -load net-tulip
- After a few minutes the VMWare ESXi 6.0 ISO will be downloaded and the “net-tulip” drivers merged with it:
The ISO will now be available in the D:\ESX-In-Hyper-V folder:
Part 2 – Create the Hyper-V VM
- In Hyper-V Manager create a new Virtual Machine:
- Click Next.
- Select Generation 1 and click Next.
- Set the Startup Memory to at least 4096MB.
- Uncheck Use Dynamic Memory for this Virtual Machine:
- Click Next.
- Don’t bother to Configure Networking on the next step – just click Next.
- Select Create a new virtual hard disk and set the Size to 10GB (this is just going to be the boot disk for the ESXi Hypervisor):
- Click Next.
- Select Install an operating system from a bootable CD/DVD-ROM.
- Select Image file (.iso) and browse to the ISO created in Part 1.
- Click Next then click Finish to create the Virtual Machine:
- Right click the new Virtual Machine and select Settings.
- Select the Processor node and increase the Number of Virtual Processors to at least 2:
- Select the existing Network Adapter node and click Remove:
- Select the Add Hardware node and select Legacy Network Adapter:
- Click Add.
- Select a Virtual Switch to connect the ESXi Host to.
- Click OK.
The Virtual Machine is almost ready to start up, but there is one more thing to do.
Part 3 – Enable Nested Virtualization
Before the starting up the Virtual Machine we need to enable Nested Virtualization Extensions on it. This is done by running a PowerShell script.
- Open a PowerShell console.
- Enter the following commands (adjusting the vmName to match the name of your Virtual Machine):
CD D:\ESX-In-Hyper-V\ .\Enable-NestedVm.ps1 -vmName 'VMWARE ESXi Host 1'
- Enter Y when asked to confirm any of the changes:
- The Virtual Machine is now ready to have ESXi installed into it.
If you run into any problems with enabling nested virtualization, I’d recommend reviewing the documentation. Covering all the possible ways Nested Virtualization might not be configured correctly is beyond the scope of this post. Also, this is still a preview feature and so may still have issues.
Part 4 – Boot ESXi Virtual Machine
- Start up the ESXi Virtual Machine and make sure you’re connected to it so you can see the ESXi boot screen:
- Quickly press Tab.
- Add the ignoreHeadless=TRUE to the Boot Options:
- Press Enter.
- The ESXi Installation system will start up.
- After a couple of minutes the VMWare ESXi 6.0.0 Installer will start up:
- You can now go through the ESXi installation process.
- You will receive this warning during the installation process but you can ignore it:
- The installation process will begin:
- Once the ESXi installation has completed you will see this message:
- Eject the ESXi Installation ISO before rebooting the Virtual Machine:
- Press Enter to reboot the VM.
Part 5 – Configure the ESXi Boot Options
The final thing we have to do is permanently set the boot options for the ESXi host so that the ignoreHeadless setting is always set to TRUE.
- When the ESXi machine reboots, quickly press SHIFT-O to set the boot options.
- Add the ignoreHeadless=TRUE to the Boot Options:
- Press Enter to boot up the ESXi host:
- Once the ESXi has booted up, press F2.
- Enter the root login credentials that were set during the ESXi installation process.
- Select Troubleshooting Options and press Enter.
- Select Enable ESXi Shell and press Enter:
- Press ALT+F1 to bring up the console:
- Enter your root credentials.
- Enter the following command:
esxcfg-advcfg --set-kernel "TRUE" ignoreHeadless
- Press ALT+F2 to return to the main ESXi screen.
The ESXi host can now be restarted without having to worry about the ignoreHeadless=TRUE setting.
You now have a fully running ESXi Host running inside a Hyper-V Virtual Machine. I shouldn’t have to point out that this is a completely unsupported way of installing an ESXi Host and should never be used for production workloads. But at least we now have a way of running ESXi Hosts in a Hyper-V Lab environment.
Here’s hoping that someone finds this useful!
I tried this with ESX 6.5 before seeing the blacklisted nic issue. However, since Windows 2016 supports Discrete device assignment, I would think that could resolve the issue if you have a dedicated NIC that can be assigned to the VM for ESX 6.5. Has anyone tried this?
LikeLike
I haven’t tried this, but it is a good idea and definitely worth a shot if you’ve got a free NIC in your WS 2016 Hyper-V host. I’ve been too snowed under with other projects to put any time into this lately so I’d be really interested to know if this works (as would many others I think).
LikeLike
Hi Daniel,
i did everzthing along with your guidance , and esx has been installed successfuly , but next it i got an issue with powering -on the VM created on this nested ESX, whatever i tried to change in vm settings, i didn`t managed to power it on , cuz it failed to power on each time with generic failure “failed to power on the VM”
can you please advise on this , what would the best way to overcome this issue?
LikeLike
Hi Dmitry, I haven’t sen this particular error before. Is this error being displayed in Hyper-V Manager?
LikeLike
I tried an Intel I210 NIC with HyperV DDA to ESX 6.0 and 6.5. Unfortunately neither see the PCI device with lscpi (however a recent live linux guest does). I think the missing piece is: https://blogs.technet.microsoft.com/virtualization/2015/11/24/discrete-device-assignment-guests-and-linux/ Anyone got sway with VMWare (or fancy a bit of ESX kernel driver development themselves…) to get them to investigate whether these kernel patches could be applied to ESX?
LikeLike
I’ve now also tried Intel I210 NIC with HyperV DDA in ESX 6.7. Unfortunately no appearance in lspci, so same as 6.0 and 6.5.
LikeLike
Hi,
here is a good blog artice, which describes Discrete Device Assignment under Server 2016:
https://blogs.technet.microsoft.com/heyscriptingguy/2016/07/14/passing-through-devices-to-hyper-v-vms-by-using-discrete-device-assignment/
LikeLike
Good for server 2016 but Windows 10 Hyper-V version does not allow you to pass though devices.
LikeLike
ESXi 6.5 doesnt install, but ESXi 6.0 does work. But when I try to start a VM I get the message:
•VMware ESX and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware ESX.
•Failed to start the virtual machine.
I will try it again with ESXi 5.5.
LikeLike
did you find a solution to this??
Im hitting the same issue
LikeLike
I followed the instruction above to install ESXi in Hyper-V VM, but when I try to start a VM in ESXi, I got the same message and it cannot started.
Did you find any solution yet?
LikeLike
I’m sorry – I haven’t managed to solve this problem yet – but then I haven’t been able to replicate it either unfortunately 😦
LikeLike
I encountered the same error with ESXi 6.0. By adding vmx.allowNested = “TRUE” to the vmx file of the VM i was able to start the VM and I haven’t seen this error again since.
LikeLike
hi,
where to download this file from?
Enable-NestedVM.ps1
thank you,
Dan
LikeLike
Hi Dan, I’m sorry I didn’t link to it! That was a mistake. You can get it here:
https://github.com/Microsoft/Virtualization-Documentation/blob/master/hyperv-tools/Nested/Enable-NestedVm.ps1
Click the RAW button and you’ll then be able to save the file from your browser.
LikeLike
u can past that script to Notepad++. then u can save as .ps1 file. if u need i can mail u.
LikeLike
great work! thanks
LikeLike
I have got the ESXi 6.0 and ESXi 5.1 up and running and it even picks up an IP from DHCP, however I am not able to connect to it with putty , no ping to and fro . it does not work with static IP as well. I have a very basic setup with no VLANS or anything. Would you know what could be the issue ?
Host – 2016 Server with hyper-v role
guest 1 – ESXi 6.0
guest 2 – ESXi 5.1
Legacy nics and nesting virtualization on guests enabled.
LikeLike
Hi Aman,
Unfortunately this is a known issue that we’re all running into. If you look through the comments there is a lot of discussion on this problem and ways of fixing it. However, I’m not certain any one way works.
Sorry I can’t be of more help 😦
LikeLike
Check some of my comments on :-
I basically had two virtual ESXi VMs, and one Windows VM all on the same Hyper-V virtual switch, and all with Legacy Network Adaptor installed. Those 3 VMs could communicate with each other. I ended up having a setup with 4 x Hyper-V VMs :-
1. 2 x ESXi VMs, with Legacy Network Adaptor
2. 1 x Windows 2012 server VM running as a domain controller, with Legacy Network Adaptor
3. 1 x Windows 2012 server VM running vCenter, NFS services and iSCSI target, with Legacy Network Adaptor
Certainly enough to get some hands on with ESXi and vCenter.
LikeLiked by 2 people
Hi
If it’s the same issue I had, you should be able to connect via the IPv6 address. Apparently ESXi will bind the management to the 1st IP it finds, in my case the static IPv6.
LikeLiked by 1 person
Great info Will! Thanks!
LikeLike
someone else here mentioned they are hitting the same issue as me.
The install goes fine, configuration fine, set up my storage etc, and when I come to create a VM:
•VMware ESX and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware ESX.
•Failed to start the virtual machine.
Nesting is enabled, running the script again tells me no action required as nesting is enabled. Any ideas?
LikeLike
That is pretty odd. Are you mounting the ESXi ISO to the host OS instead of the Guest?
LikeLike
On your virtual ESXi host add
vmx.allowNested = “TRUE”
to /etc/vmware/config
Also, you will only be able to run 32 bit OSes on the virtual ESXi host.
LikeLike
I tried this and didn’t work. anyone successful powering on a virtual machine?
VMware ESX and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware ESX.
Failed to start the virtual machine.
LikeLike
Thanks, your solution worked for me, I’m succesfully running a 32bit OS VM on the ESXi
LikeLike
Thanks dude, your solution worked for me
LikeLike
I got this when trying to create an ESXi VM in the nested ESXi host(Hyper-V VM).
The fix is to pull the ESXi VM’s .vmx file and add vmx.allowNested = TRUE
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2108724
LikeLike
How connect(Ping) Esxi host —> BaseMachine( Win8 ) , What Kind of Switch we want use ?
What are Steps need to do for ESXI connect Local machine (Hyper V enabled Machine )
LikeLike
Hi There,
I think the switch type to use in this case is an Internal switch. Although, I think from memory you can’t ping the ESXi from the host. You can only ping it from another VM attached to the Internal Switch also using a Legacy Network Adapter. I’m not sure if this can be fixed.
HTH
LikeLike
Sure you can, Create an External vSwitch, this create a vSwitch on the Hyper-V host (Win 8 or 10 or Server 2016) which ever you have Hyper-V installed on, this will bind the vSwitch to a physical adapter on the host. In this case most people will have a flat /24 subnet with their routers acting as the DHCP server. Any VM’s booted up connected to the external vSwitch will get an IP from the router’s DHCP server. Find this IP and ping away. In my case I setup a Windows 7 virtual machine and connected to the external vSwitch. I then added a secondary nic on this VM connected to my internal vSwitch. This VM was then one I could RDP into and connect to hosts within the internal private vSwitch.
LikeLike
U can use external switch. and u can manage trough vsphere client or vsphere web client.
LikeLike
Wow… Really superb blog. Thanks for the idea. Successfully done. Otherwise I need to install VMware,
Vickky from Sri Lanka
LikeLike
Really glad it has been useful! Thank you! 🙂
LikeLike
Hi there thanks heaps – managed to get all working – now how do i go about adding the storage? test environment – i am using external HDDs as storage – dunno if possible or not.
Hope to hear back from you
Thanks
Kp
LikeLike
Hi Ken,
You should be able to create additional storage VHD’s on your External HDD’s and attach them to the ESXi Virtual Machine. Although you’ll want to make sure the External HDD’s are attached when ESXi is booted. I’d also suggest attaching the new VHD’s as SCSI devices (rather than IDE). Does that help?
THanks
Dan
LikeLike
Found an easy solution for the host to communicate with outside:
– Create vSwitch Internal
– Used my ‘usual’ pfSense router, added a Legacy NIC connected to vSwitch Internal
For better performance, forced the NIC to full duplex
LikeLike
Thanks for this great post! I managed to get this solution working today on a Windows Server 2016 box – just with VMware 6.0, due to the blacklisted NIC driver, but still – great for a little demo environment which I’m putting together.
LikeLike
Thank you! Glad it has been useful! 🙂
LikeLike
Hello Daniel, I am not sure you still read this, but following the steps above, I’m getting the No network adapters were detected…
Doesn’t the net-tulip drivers include drivers for a nic?
LikeLike
Hi Kevin, I do still read this, but it has been a few years since I last worked with ESXi on Hyper-V. So I’m not sure what might be causing this. Have you had a look through the other comments here as I think someone else had the problem and resolved it.
LikeLike
Hi all, ESXi is nested on HyperV and receives an IP address from my DC (same network, vSwitch “internal” network) but i cannot ping it and reach out at all.
After hours i found how to enable “Promiscuous mode” on vSwitch, on many articles they says that it’s required to nest the VM:
From ESX console:
esxcli network vswitch standard policy security set -p true -v vSwitch0
But my machine is still unable to comunicate inside it’s lan.
Anyone has ideas?
LikeLike
Hi,
I’m happily running a pair of ESXi 5.5 servers in my Hyper-V (Server 2016) environment following the steps in this post, so thanks very much 🙂 I can connect to each host on it’s web management interface from another machine on the same network, so all good.
Couple of small updates, the downloader script is now version 2.5 (ESXi-Customizer-PS-v2.5.ps1) and instead of running the Enable-NestedVM.ps1 I used the two commands to enable nesting and MAC spoofing listed here: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization
Thanks again!
John
LikeLike
Thank you very much for creating this post Daniel, this helped me a lot to create a test lab I need to practice for my exam and your guide is very helpful. I was thinking that you should mention on the steps the solution for the ‘VMware ESX and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware ESX.’ error, the solution that Tom Watson gave worked for me. Adding a line to /etc/vmware/config with vmx.allowNested = “TRUE”.
LikeLike
Glad to help and also great the solution Tom provided worked as well! Really great to hear! 🙂
LikeLike
Hi Guys,
Very nice article. Actually I faced the issue related to the network connectivity to the ESXi VM. Just to confirm that it’s working as suggested earlier:
VM with Windows OS – Legacy Network Adapter – Internal Switch
VM with ESXi 6.0 – Legacy Network Adapter – same Internal Switch
Connection is possible to be made only from the VM with Windows OS but not from the host itself, if the switch is external.
If I find another way will notify
LikeLike
Thanks Damyan!
LikeLike
Hi Guys.
Can I create a new virtual machina in ESXi? I have tried but showed me one generic error.
Someone can help me?
Thank you.
LikeLike
One more information. The error is when I try to start the virtual machine.
LikeLike
Hi Roberto, Are you able to post a screenshot of the error you’re seeing?
LikeLike
Hi, I have a problem to install ESXi 5.0 on my Hyper-V 2012
VIB DEC_bootbank_net-tulip_1.1.15-1 requires vmkapi_2_1_0_0, but the requirement cannot be satisfied within the ImageProfile.
VIB DEC_bootbank_net-tulip_1.1.15-1 requires com.vmware.driverAPI-9.2.1.0, but the requirement cannot be satisfied within the ImageProfile.
Anyone have kown how I can fix this ?
LikeLike
Hi Kevin, You can probably build the VHD on Windows Server 2012, but you can’t run it. This requires Nested Virtualization support which is only available on Windows 10 or Windows Server 2016. I also doubt this will work with ESXi 5.0 – I’ve only done this on ESXi 6.0…
LikeLike
Wow… Thanks for such great post… Its saved our dollars of hardware cost to learn vmware.
Thanks by Samim & Ali (Potential Techies)
LikeLike
Really glad it helped! 🙂
LikeLike
I’ll be enable to create a VM on the ESXi, running on Hyper-V?
LikeLike
Yes, that is correct.
LikeLike
I assume there is no way to run a 64-bit OS within ESXi using this method then?
LikeLike
Unfortunately not that I know of 😦
LikeLike
Hi,
Esxi installed fine but i can’t ping it from my hyper-v host or from another hyper-v vm
legacy external on esxi
legacy external on hyper-v vm
Please advice, thanks.
LikeLike
Hi Ben,
There are a number of comments above that should show various solutions to this problem. It is a bit annoying that the networking is so difficult to get working properly.
Thanks
Dan
LikeLike
Thanks for this reply but i have tested all solution, same thing 😦
LikeLike
Hi Ben,
Thank you for your post. It is really interesting.
Concerning the problem with 6.5 version, can you explain a little bit more why it doesn’t work?
Do you think that a solution will be available in the futur or is it totally dead?
Thank’s
Badack
LikeLike
I have Esxi 6.0
LikeLike
Works like a champ!
LikeLike
Hello Daniel,
Question, how do we get this to download ESXi 6.5 instead of 6.0?
LikeLike
Script says it should grab the lastest, but saw down the page parameters can be used:
The simplest use case: Create a vanilla ESXi installation ISO with the latest patch level
.\ESXi-Customizer-PS-v2.5.ps1
Calling the script without any parameters will create an ESXi installation ISO of the latest ESXi version (6.5 as of now) and its latest patch level. The ISO file will be created in the script directory. You can modify this behavior by using one or more of the following parameters:
-v50 : Create the latest ESXi 5.0 ISO
-v51 : Create the latest ESXi 5.1 ISO
-v55 : Create the latest ESXi 5.5 ISO
-v60 : Create the latest ESXi 6.0 ISO
-v65 : Create the latest ESXi 6.0 ISO
LikeLike
Well ran through everything and it made my ISO, but ESXi 6.5 Build 5310538 fails to find the network adapter even when adding a Legacy Adapter (and deleting the other adapter)
LikeLike
Great info Matthew. In theory the 6.5 ISO should work, but I’ve not had time to try it. And I’ve definitely had more problems using this on Windows 10 than on Server 2016.
It is probably time I revisit the process and see if it can be improved as well as exposing/suggesting parameters to be used in the script.
As for the 6.5 build not finding the network adapter, that is not good. That may mean that there is some compatibility issue with the tulip driver with 6.5 and the Legacy hardware – which will be pretty tough to fix. The ideal solution would be for VMWare to release an ESX driver that can hook into a Hyper-V non-legacy network adapter – but I don’t see that happening. 😦
LikeLike
If only all these companies would get along and find a standard! but I guess then it would not make our lives very interesting.
I am giving this code run a try using powershell to assign pass through hardware, the commands appear to be availible in Windows 10, but not getting them to work 😦
Modified from this guide
https://techstronghold.com/blogs/virtualization/pass-through-wired-or-wireless-wi-fi-nic-to-vm-using-hyper-v-discrete-device-assignment-dda-in-windows-server-2016
My instance ID reference my QLogic DaulPort Dell NIC’s I have in this server. If I can get it working will certainly let you know.
=================================================================
$vmName = ‘ESXi-01’
$instanceId = ‘*B06BDRV*’
$ErrorActionPreference = ‘Stop’
$vm = Get-VM -Name $vmName
$dev = (Get-PnpDevice -PresentOnly).Where{ $_.InstanceId -like $instanceId }
if (@($dev).Count -eq 1) {
Disable-PnpDevice -InstanceId $dev.InstanceId -Confirm:$false
$locationPath = (Get-PnpDeviceProperty -KeyName DEVPKEY_Device_LocationPaths -InstanceId $dev.InstanceId).Data[0]
Dismount-VmHostAssignableDevice -LocationPath $locationPath -Force -Verbose
Set-VM -VM $vm -DynamicMemory -MemoryMinimumBytes 8096MB -MemoryMaximumBytes 8096MB -MemoryStartupBytes 8096MB -AutomaticStopAction TurnOff
# If you want to play with GPUs:
# Set-VM -VM $vm -StaticMemory -MemoryStartupBytes 4096MB -AutomaticStopAction TurnOff
# Set-VM -VM $vm -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 2048MB -HighMemoryMappedIoSpace 4096MB -Verbose
Add-VMAssignableDevice -VM $vm -LocationPath $locationPath -Verbose
} else {
$dev | Sort-Object -Property Class | Format-Table -AutoSize
Write-Error -Message (‘Number of devices: {0}’ -f @($dev).Count)}
==================================================================
I have a beast of a home lab rig, but ESXi 6 and 6.5 have been very flaky with ATI GPU pass through and the ESXi host hard crashing often so I am now going a Windows 10 install with Hyper-V and trying to run ESXi in Hyper-V.
LikeLike
In My lab, this article is working. but my Esxi can only run 32 Bit Guest OS. Is it possible to run 64 Bit Gust OS? if yes, could anyone share how to do?
LikeLike
Unfortunately I never could get that working. 😦 I could only get 32-bit OS working.
LikeLike
For me Everything is working as this article explains, but any VMs on Legacy Network adapter is not communicating with any other VMs on the same switch with standard network adapter. I have server 2016 Hyper-v. Please help.
LikeLike
Hi There,
Unfortunately I’ve never been able to solve the problem of why this happens to some people. There are reported fixes in the comments though, so you could try some of those. I personally have not had the problem so couldn’t validate if the fix worked or not.
Sorry about that.
LikeLike
Hello Daniel. I had the issue where my ESXi hosts unable to communicate with my vCenter server and other servers on same virtual switch. I figured it out, it is communication problem between legacy network adapter and standard network adapter. I had to use legacy network adapter on all of my servers and ESXi host for them to communicate. My lab is up and running. I have another issue where a virtual machine is not powering on. I’m wondering if you had the same issue. I get this error message.
“VMware ESX and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware ESX.
It looks like it is nesting issue. Thought?
LikeLike
Hi There Naeem,
I’m not actually sure about that one. Some people have reported seeing this. Is this message occurring in a VM running inside the hyper-v host?
LikeLike
That is correct. It is showing in the vCenter server.
LikeLike
It has been a while since I looked into this, but it could be because a Gen 2 VM was created in Hyper-V for the ESXi host, rather than a Gen 1? Gen 2 uses UEFI instead of BIOS which ESXi might be detecting.
LikeLike
I had the same thing, only way I was able to resolve this was by using an additional NIC in the machine (that was not yet in use) and connecting that to my physical switch, adding that to a separate vSwitch (called “ESXi Virtual Switch”) and putting in these commands on the HyperV host:
$portFeature=Get-VMSystemSwitchExtensionPortFeature -FeatureName “Ethernet Switch Port Security Settings”
# None = 0, Destination = 1, Source = 2
$portFeature.SettingData.MonitorMode = 2
Add-VMSwitchExtensionPortFeature -ExternalPort -SwitchName “ESXi Virtual Switch” -VMSwitchExtensionFeature $portFeature
And then putting the legacy NIC on the HyperV-VM containing ESXi to Port Mirroring mode “Destination”. That way all traffic to that vSwitch gets mirrored to the ESXi VM, which worked for me. Hope this helps!
LikeLike
Great tip! Thank you!
LikeLike
If you are installing v6.5 of ESXi, you will need the version 6.5.0R1 of VMware PowerCLI. https://my.vmware.com/group/vmware/details?downloadGroup=PCLI650R1&productId=614
LikeLike
Does this comment mean it IS possible to get ESXi V6.5 working on Server 2016 or Windows 10 Hyper-V? I had tried Server 2016 with Discrete Device Assignment for the NIC but never got it to work – possibly due to lack of support in the BIOS.
LikeLike
Hi Richard,
I’m not sure about ESXi 6.5 – I’ve not tried that version. It will depend on if the Tulip drivers are compatible and available with ESXi 6.5. But the process I documented does work for ESXi 6.0. It is pretty fiddly to get the networking to talk outside the host though – but it does work if you’ve got the time to set up a gateway node on the internal switch bound to the ESXi 6.0 host.
Thanks
Dan
LikeLike
I’ve gotten V6 to install fine, but for some reason, it will not pickup a DHCP address. I have other VMs in Hyper-V connected to the same external switch and they pickup addresses just fine. Any recommendations? Thanks in advance
LikeLike
Never mind – I didn’t take some advice on an older post to NOT try and use a wireless adapter to bond the external switch to. Switched it over to ethernet and am now good to go. Thanks!
LikeLike
Thank you for this guide, it has really helped setting up my VMware test lab. However I am having a problem getting ESXi 5 to install as it appears the net tulip drivers which work with ESXi 6 are not compatible. Does anyone have a link to an alternate driver which works with ESXi 5?
The reason I ask is I would like to simulate an upgrade from ESXi 5 to ESXi 6
Thanks
John
LikeLike
Thanks Daniel, I was setting up VMware lab on my home PC with Windows 10 Installed. I encountered this error while installing ESX, did some research and found your article on Net. I followed the steps properly and were successfully able to install ESX Hypervisor 6.0..
Thanks a lot again.
LikeLike
Thanks Ahmed! Really glad my article helped! 🙂 Thanks for your comment.
Cheers
Dan
LikeLike
Both of my ESXi hosts are Gen1 machines. Hyper-V doesn’t allow to create legacy network adapter on Gen2 virtual machines. It would be nice to have running VMs on the lab, but not necessary to what I want to accomplish. Thanks, Daniel.
LikeLike
Good point about the Gen1! Sorry I could’t be of more help there 😦 Someone else had mentioned seeing this message as well somewhere (in one of the comments). But I don’t think they were able to solve it either.
LikeLike
This is a great guide! I was able to setup 3 ESXi hosts in my 2016 Hyper-V environment in my home lab. I setup vCenter and got the hosts pulled in and setup. However, I have a problem where I added extra disks to the ESXi VMs — it wouldn’t show any storage besides the boot drive. Has anyone else seen this issue?
I tried all kinds of things: adding drives as another IDE drive, as a SCSI drive, when the VM was powered off, before I installed ESXi, I rescanned the datastores, etc. I can never get the ESXi host to show more than the original boot HD and the CD-ROM. It doesn’t make sense. If it was just the SCSI drive not working I’d assume it was a driver issue, but even when I add a second VHDX on the SAME virtual IDE controller as the boot driver, it still won’t show up. Tried thick and dynamically expanding drives too.
LikeLike
Hi Jeremy,
Thank you!
And no, unfortunately I haven’t noticed this, but I haven’t actually added any extra disks to the ESXi VM that I can remember. It seems pretty odd. But it could be the way ESXi manages disks. If you start the ESXi host and then enter the administration console, you should be able to examine all the disks detected in the system. This may allow you to mount them, but it has been a long time since I’ve played with this.
Thanks
dan
LikeLike
Hi Daniel, thank you for the article. Unfortunately it doesn’t work on Windows 10 Hyper-V Fall Creators Update. I’ve created a customized Image using .\ESXi-Customizer-PS-v2.5.1.ps1 -vft -v60 -load net-tulip , created Gen1 VM with legacy NIC, but ESXi can’t find any network adapters.
LikeLike
Hi Konstantin, Did you try legacy network adapter or standard network adapter? In order for it to communicate, you need to use legacy network adapter.
LikeLike
Yes, I can confirm the problem. Hyper-V in Fall Creators Update in Win10 seems to have problem.
LikeLike
I’m currently only running Windows 10 Enterprise edition so I’ll have to manually update to this version to see what is happening.
LikeLike
I had a look at the list of features removed from the Fall Creators update: https://support.microsoft.com/en-us/help/4034825/features-that-are-removed-or-deprecated-in-windows-10-fall-creators-up
I couldn’t see anything obviously pointing to this, but perhaps it was affected by the removal of the TCP Offload Engine?
LikeLike
Surely I’m using Legacy Network adapter. However, ESXi 5.5 works fine (can run a VM inside Vmware, but ESXi hosts works fine).
In 6.0 Iooks like de don’t load tulip package during ESXi boot. Probably esxi logs can give more information, but I’m not very proficient at Vmware.
BTW, can I run VMs inside Vmware? Got an error “Failed to start the virtual machine”.
LikeLike
Reblogged this on Process Studio.
LikeLike
Currently having problems with windows 10 – ESXI cannot find the network adapter.
LikeLike
Hi There,
Other people have also reported this in the Fall Creators update for Windows 10. Are you using that version?
Can I confirm that you are using a Gen1 VM and are using Windows 10 Fall Creators update?
Cheers
Dan
LikeLike
I am running Windows 10 Ver 1709 OS Build 16299.64 and getting a “No Network Adapters” when the ESXi 6 install loads.
LikeLike
I have the same problem on Hyper-V 2016. Legacy
LikeLike
Definitely using Gen-1, Legacy Adapter.
I’m using Windows 10 Pro build 1709.
It seems that the fall creator update was installed.
I will make an attempt to remove it and update…
LikeLike
Cannot uninstall that update, damn if any solution please post I need to train with Vmware.
LikeLike
Ah I see. This sounds like Microsoft may have changed the signature of the Legacy adapter – causing the Tulip driver to no longer work with this. I’m hoping this is not the case though.
LikeLike
Hi Daniel. Since it works with ESXi 5.5, I cannot understand how Legacy NIC ID changed can affect only ESXi 6.0 . Maybe newest builds of ESXi 6 have some changes?
LikeLike
Hi Konstantin, you are right. I’m not sure on that one either. But it is possible that newer builds of ESXi or the tulip drivers have caused some sort of conflict. The difficulty is that we’re flying blind as I can’t find any mention of changes to Legacy NIC’s in W10 FCU.
LikeLike
I don’t know if the V60 builds are newer, but if so that certainly could be the cause. I know that the Tulip driver was specifically black-listed by VMWare in V6.5 so if a V60 updated build is being used, maybe that is the issue?
LikeLike
Some good thoughts. It is a pity about the Tulip driver being black-listed.
LikeLike
I can confirm there is an issue with both 6.0 and 6.5 downloaded Dec-2017, but it works with 5.5.
LikeLike
At least previous versions are working fine, although we can’t test the latest Vmware features. However, I’m concerned about inability to run VMs inside ESXi host (5.5 in my case). I receive an error that I can’t start it. I believe that I should be able to run VMs inside ESXi, since I can do the same for nested Hyper-V…
LikeLike
TY, was able to edit the script from 6.0 to 5.5 – Works great – amazing job guys.
LikeLiked by 1 person
Nice! Thank you for the comment! 🙂
LikeLike
Hi Daniel, to my question about powering on the VM on nested esx,
it is slightly updated for now, so i managed to install ESX6.0 on WS HV 2016, and now the folllowing failure is comming up : “VMware ESX and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware ESX.” , so now obviously this becomes my new question to you 🙂 if it is posssible to overcome it?
LikeLike
Firstly Thank you for your blog of shared tutorial
I followed the tutorial step by step . I use ESXi 6.0 version
but Hyper-v host said it can’t found any network adapter via ESXI installation
OMG. What can i do for this moment ?
LikeLiked by 1 person
Hi Billy,
Thanks for reading. Are you using Windows 10 Creators Update 2? I think Microsoft has made a change to Hyper-V legacy adapters in this version of the OS that prevents ESXi from detecting them. I’ve not found a work around for this issue. You either have to use an older version of Windows 10 or you could deploy this onto Windows Server 2016.
Sorry I can’t offer any other suggestions.
THanks
DAN
LikeLike
Thank you for your reply
I tried it on Windows server 2016 version [10.0.14393]
LikeLiked by 1 person
Hmm. Then this should work fine. Did you add a Legacy Adapter to the VM?
LikeLike
I added a Legacy Adapter inside the Guest ESXI, but not work.
I found some information, said net-tulip driver, vmware blocked the driver, so 6.0 version is not identified.
LikeLike
Hi, I have tried this out today and I have run into the same issue with the Legacy Network Adapter not being detected during the installation after adding the tulip driver to the image. So it definitely looks like a change on the legacy adapter or latest ESXi 6.0 image. I am trying to nest ESXi 6.0 on a Server 2016 server. If I find a fix I will post an update.
LikeLike
Any updates?
Or how do I install ESXi 5.5 on Hyper-V 2016?
LikeLike