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 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

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

USB Network Native Driver for ESXi Fling

Balena Etcher


18 Comments

J. N. · February 6, 2023 at 15:37

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 19:52

    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 20:28

      Hi Jens. Glad this one helped you. Which version of Python did you mean by “the latest”?

        Jens · February 6, 2023 at 21:12

        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 22:37

          Yes, those Python versions add complexity for sure. Couldn’t my post about PS for Windows post help?

          https://blog.zuthof.nl/2022/11/30/powercli-13-update-and-installation-hurdles-on-windows/

          Jens · February 6, 2023 at 22:54

          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 18:10

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 22:13

    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 19:34

      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 18:21

        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 22:05

          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 16:55

          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 21:53

        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 23:14

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 09:04

    Hi Alexander. Thanks for your feedback. I’ve updated the relevant posts based.

    Cheers, Daniël

Arnout Boer · July 13, 2023 at 22:45

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 21:42

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 14:29

    Thanks for the feedback, Arnout. I’ll check if the post needs an update on this matter.

Leave a Reply to Erik Cancel reply

Avatar placeholder

Your email address will not be published. Required fields are marked *