Once and a while ESXi needs to be installed on a device of which the drivers (NIC / Storage) are not built into the ISO installer (yet). In my case it’s needed for the vExpert homelab Maxtang NUC device. This device has a Realtek PCIe NIC’s not supported by ESXi 8. Because of that limitation, I used a Realtek USB based NIC, supported by the USB Network Native Driver for ESXi fling.
When a network driver is not available to complete the creation of the default vSwitch and management network kernel port during the ESXi install phase, the ESXi installer quits with the message that no suitable NIC is found for the management network. For this use-case I needed to create a customized ESXi 8 installer with the USB Network native driver.
Prerequisites
- PowerCLI 13 (v13 required for ESXi 8 support)
- ESXi 8 depot zip file (Offline Bundle)
- USB Network native driver zip file (Offline Bundle)
PowerCLI dependency on Python
Since PowerCLI 13, the ImageBuilder and AutoDeploy modules are cross-platform. Both modules are dependent on Python which needs to be installed and configured. Make sure Python version 3.7.9 is installed! Else the ISO creation or booting the custom ISO could fail (see comments on the bottom of this post).
Check my post below on PowerCLI and Python install hurdles on Windows and Linux. Check William Lam his post how to do the same for MacOS.
PowerCLI 13 installation hurdles on Linux
PowerCLI 13 update and installation hurdles on Windows
Create ESXi Customized ISO Installer
I’m assuming that PowerCLI 13 is installed, Python configured and the required ESXi and driver files are stored in your ‘Download’ folder. As source, I used the vSphere 7 documentation “Create a Custom ESXi ISO Image with PowerCLI Cmdlets“.
Check base image version info
Check the ESXi version of the depot zip file.
PS /Users/User/Downloads> Get-DepotBaseImages -Depot ./VMware-ESXi-8.0-20513097-depot.zip
Version Vendor Release date
------- ------ ------------
8.0.0-1.0.20513097 VMware, Inc. 09/23/2022 17:33:13
Check driver version info
Check the version of the driver inside the zip file.
PS /Users/User/Downloads> Get-DepotComponents -Depot ./Downloads/ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip
Name Version ID Vendor Release date
---- ------- -- ------ ------------
VMware-vmkusb-nic-fling 1.11-1vmw.800.1.20.61054763 VMware-vmkusb-nic-fling:1.11-1vmw.800.1.20.61054763 VMware, Inc 11/21/2022 06:22:41
Create software specification
Create the software specification file in the ‘Downloads’ folder. For example: “vmware-esxi8-custom-iso.json“.
{
"base_image": {
"version": "8.0.0-1.0.20513097"
},
"components": {
"VMware-vmkusb-nic-fling": "1.11-1vmw.800.1.20.61054763"
}
}
Generate custom ISO image
Create the custom ESXi 8 ISO file.
PS /Users/User/Downloads> New-IsoImage -Depots “./VMware-ESXi-8.0-20513097-depot.zip” , “./ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip” -SoftwareSpec “./vmware-esxi8-custom-iso.json” -Destination “./VMware-ESXi-8.0-20513097-custom.iso”
PS /Users/User/Downloads> ls -l ./VMware-ESXi-8.0-20513097-custom-depot.iso -rw-r--r-- 1 user staff 649576448 Dec 5 15:51 ./VMware-ESXi-8.0-20513097-custom-depot.iso
Write ISO to USB stick
Now the customized ISO file can be written to a USB stick. Depending on your used OS different tools are available. For writing ISO files to a USB stick I lately use Balena Etcher, which is a simple to use multi-platform (Windows, Linux , Mac) solution to do just that.
To conclude
Now all the preparations are in place to install ESXi 8 with the USB Network Native Driver included. More to that in a new post.
Useful links
PowerCLI 13 installation hurdles on Linux
PowerCLI 13 update and installation hurdles on Windows
Create a Custom ESXi ISO Image with PowerCLI Cmdlets
How to install PowerCLI 13.0 and use new Image Builder & Auto Deploy cmdlets on Apple Silicon
19 Comments
J. N. · February 6, 2023 at 3:37 pm
Hi!
This guide is exactly what I was looking for! I wanted to create a custom iso with even the exact matching image and fling (and even versions) so I thought it would be a walk in the park after some earlier failed attempts. Unfortunately, after I follow through with all the steps, I get an error:
” New-IsoImage : Error retrieving file for VIB ‘VMW_bootbank_iavmd_3.0.0.1010-5vmw.800.1.0.20513097’:
(‘vib20/iavmd/VMW_bootbank_iavmd_3.0.0.1010-5vmw.800.1.0.20513097.vib’, “Unable to open VIB archive in streaming
mode: ‘_SharedFile’ object has no attribute ‘writing'”).
At line:1 char:1″
I have no idea what is wrong. I believe I have PowerCLI and Python and such all setup correctly yet I can’t get any further than this error. I followed your exact same steps (albeit using another directory).
Do you have any idea or advice on how to proceed? It would be much appreciated!
Regards,
Jens
Jens · February 6, 2023 at 7:52 pm
I got around it by uninstalling the latest python and installing python 3.7.9. Seeing my previous comment is awaiting moderation it might as well not be placed?
Daniël Zuthof · February 6, 2023 at 8:28 pm
Hi Jens. Glad this one helped you. Which version of Python did you mean by “the latest”?
Jens · February 6, 2023 at 9:12 pm
It was Python 3.11.1. I read some more blogs/websites stating this error (I believe William Lam wrote something about it too) and someone under one of those commented that Python 3.7.9 did the trick for them so I just tried it and it worked flawlessly. Thanks again for the great guide 🙂
Daniël Zuthof · February 6, 2023 at 10:37 pm
Yes, those Python versions add complexity for sure. Couldn’t my post about PS for Windows post help?
https://zuthof.nl/2022/11/30/powercli-13-update-and-installation-hurdles-on-windows/
Jens · February 6, 2023 at 10:54 pm
Oh I really am not to deep into the whole Python stuff, this actually the first time I ever made a custom ESXi image. I was glad to find your blog as it mentioned the exact versions I was working with. And when it didn’t work I went on, on my Google journey. The post you mentioned never showed up but that’s probably because I did some real basic searching or something 🙂
Erik · May 7, 2023 at 6:10 pm
Thanks for the instructions Daniël Zuthof! I managed to create an iso file with your guide. But for some unclear reason the initialization of the installation hangs in a loop at the end with error messages.
I am writing to you in case you have any idea why I get the following error messages:
hon3.8/unket1.py”, line 7112, in GetNVDA
def GetNVDA (self) -> “bool”: return _unkct1.Cpu InfoImpl_GetNVDA (self)
nket1.HostCt lException: Schema object not found: comp esx grp vnkernel key options error [ConfigStore:47e10a340] Schema not found:
esx/advanced_options/user_var_definitions
error [Conf IgStore:47e10a340] [1037] Schema object not found: comp esx grp advanced_opt lons key user_var_definitions Id ESXIShell Exception occured: Schena object not found: comp esx grp advanced_options key user_var_definitions id ESXiShellTimeOut error [ConfigStore:232b649c80] Schema not found: esx/unkernel/options
error [ConfigStore: 232b649c80] [1037) Schema object not found: comp esx grp vnkernel key options
Traceback (most recent call last):
File “weasel/main.py”, line 17, in
import process_end
File “/usr/lib/umuare/weasel/process_end.py”, line 15, in import visor_cdron
File “/usr/lib/vmware/Heasel/visor_cdrom.py”, line 1, in from util import execWithLog
File “/usr/lib/vmware/weasel/util/__init__.py”, line 1, in
from_util import x
File “/usr/lib/vmware/weasel/util/_util.py”, line 29, in
IS_VM = vnket1.Cpu InfoImpl().GetNVOA()
File “/lib64/python3.8/vnkct1.py”, line 7142, in GetNVOA
def GetNVOA(self) -> “bool” return vnkct1.Cpu InfoImpl_GetNVOA (self)
nket 1.HostCt lException: Schema object not found: comp esx grp vnkernel key options
error [ConfigStore:647blc3401 Schema not found: esx/advanced_options/user_var_definitions
error [ConfigStore:647b1c340] [1037] Schema object not found: comp esx grp advanced_options key user ve del’initions id ESXiShell1 Exception occured: Schema object not found: comp esx grp advanced options key user_var_definitions id iShellTimeOut
error [ConfigStore:39dd763c801 Schema not found: esx/vnkernel/options
error [ConfigStore:39dd763c80] [1037] Schema object not found: comp esx grp vnkernel key options
Traceback (most recent call last):
File “weasel/main.py”, line 17, in
import process_end
File “/usr/lib/vmware/weasel/process_end.py”, line 15, in
import visor_cdron
File “/usr/lib/umuare/ucasel/visor_edron.py”, line 1, in from util import execWithLog
File “/usr/lib/vmware/weasel/util/__init__.py”, line 1, in
from.util import –
File “/usr/lib/vmware/weasel/util/_util.py”, line 29. In
IS_VM unket 1.Cpu InfoImpl().GetNVDAC)
File “/lib64/python3.8/unket1.py”, line 7142, in GetNVDA
def GetNVOA (self) -> “bool”: return vnkct1.Cpu InfoImpl_GetNVDA (self)
nket1.HostCt lException: Schema object not found: comp esx grp vnkernel key options
error [Conf IgStore:6926d3c340] Schema not found: esx/advanced_options/user_var_definitions
error [Conf igStore:6926d3c3401 [1037] Schema object not found: comp esx grp advanced_options key user_var_definitions id ESXIShell Exception occured: Schena object not found: comp esx grp advanced_options key user_var_definitions id ESXiShellTincout
This is the json file:
{
“base_image”: {
“version”: “8.0.1-0.0.21495797”
},
“components”: {
“VMware-vmkusb-nic-fling”: “1.12-1vmw.801.0.0.64098092”
}
}
Images and component used:
VMware-ESXi-8.0U1-21495797-depot.zip
ESXi80U1-VMKUSB-NIC-FLING-64098092-component-21669994.zip
Daniël Zuthof · May 9, 2023 at 10:13 pm
Hi Erik,
My blog was based on ESXi8 and the v1.11 USB NIC Fling. Do you have the right Python version installed (3.7.1 of higher)? Maybe updating to PowerCLI 13.1 helps since you’re using 8.0 U1?
I’ve just updated to PowerCLI 13.1, left Python at 3.7.9 and re-tested creating a 8.0 U1 custom ISO with USB Fling. The ISO was able to flash on a USB drive and my Lab host just booted to the ESXi installer.
JSON:
{
“base_image”: {
“version”: “8.0.1-0.0.21495797”
},
“components”: {
“VMware-vmkusb-nic-fling”: “1.12-1vmw.801.0.0.64098092”
}
}
PowerCLI command:
New-IsoImage -Depots “.\Downloads\VMware-ESXi-8.0U1-21495797-depot.zip” , “.\Downloads\ESXi80U1-VMKUSB-NIC-FLING-64098092-component-21669994.zip” -SoftwareSpec “.\Downloads\vmware-esxi8u1-custom-iso.json” -Destination “.\Downloads\ESXi-8.0U1-21495797-custom.iso”
I’d like to hear you progress.
Cheers, Daniel
Erik · May 10, 2023 at 7:34 pm
Thanks for the reply Daniël Zuthof!
I checked the python version and the CLI version:
* Python 3.7.9
* PowerCLI 13.1
I made another attempt with the same JSON and PowerCLI command as you, but the esxi installer crashes just before the wizard is about to open.
I’m starting to wonder if there’s some compatibility issue with my motherboard that’s preventing it from working. However, it is strange that the official ISO file works. Have tested on two servers I have and the same error with with custom ISO on both. Custom ISO for ESXi 6.7.0 works.
JL · May 21, 2023 at 6:21 pm
I have the same error message as Erik but using Python 3.11. I have no problems creating the ISO file following your guide, but at the end of the starting process, it jumps into a loop with the same error message.
Daniël Zuthof · May 21, 2023 at 10:05 pm
Hi,
That’s strange behaviour, that I did not see in my lab. Did you check if ESXi works fine if you install the latest ESXi 7 and upgrade to ESXi8 (latest) afterwards? If that works, it would show that it should run and has drivers for the NIC and disk controller.
Cheers, Daniël
JL · May 28, 2023 at 4:55 pm
Hi! I’ve tried using Python 3.7.9 like Alexander Rau commented and works for me too. Thnks!
Daniël Zuthof · May 21, 2023 at 9:53 pm
Hi Erik,
That’s strange behavior indeed. What extra software did you add in the software specification JSON file? What does happen when you install ESXi 7.0 U3 latest and upgrade to 8.0 U1 latest? Does that work?
Cheers, Daniël
Alexander Rau · May 24, 2023 at 11:14 pm
I ran into the same issue. Downgrading to python 3.7.9 from 3.11 fixed the issue for me.
Alex
Daniël Zuthof · May 25, 2023 at 9:04 am
Hi Alexander. Thanks for your feedback. I’ve updated the relevant posts based.
Cheers, Daniël
Arnout Boer · July 13, 2023 at 10:45 pm
Glad I found this page, thanks to the comment of Erik. I finally managed to install esx8 after a day of hobbying 😉 Balena gave an error b.t.w. so I stuck with Rufus
Arnout Boer · July 14, 2023 at 9:42 pm
For future reference:
I got the error Exception: No vmknic tagged for management was found. Solution found here:
https://www.virten.net/2020/07/solution-esxi-installation-with-usb-nic-only-fails-at-81/
• At this point, ESXi is already installed, but not configured.
• Remove the installation media and reboot the system (ALT-F1, root without pw, reboot)
• When ESXi is loaded, press F2 and login as “root” without password. (The password entered during the installation has not been saved because the configuration failed)
• You should notice that all Network Options are greyed out. Select Network Restore Options.
• Select Restore Network Settings
• Log out
• Log back in
• Network options are no longer greyed out and the vusb0 adapter has been detected
Daniël Zuthof · August 19, 2023 at 2:29 pm
Thanks for the feedback, Arnout. I’ll check if the post needs an update on this matter.
daye · November 19, 2024 at 12:15 am
Thanks for this instruction ! I don’t have the esxi offline zip file any more, but I still have the esxi7.ISO, Anyway I can customize this one with ISO instead of the zip file ?