Making a Realtek NIC Driver Survive Reboots on ESXi 8 (the /tardisks Method)

by Cody Chamberlain

The problem

You've got a homelab box with an onboard Realtek NIC. ESXi doesn't ship a driver for it. You do the sensible thing: grab the Realtek driver Fling (if-re), inject it into the installer ISO, and boot.

The installer sees the NIC. The install completes. You reboot into your shiny new host and... no network adapter. The NIC that worked thirty seconds ago is gone.

That's the trap this post is about. I lost most of a day to it, including detours through PowerCLI on macOS and a USB stack that refused to mount anything. The actual fix takes about five minutes.

Environment I used:

  • ESXi 8.0 Update 3e (build 24677879), the free ISO
  • Realtek driver Fling if-re 1.101.01-5vmw.800.1.0.20613240
  • macOS for building the ISO (no Windows, no PowerCLI)
  • AMD-based box with an onboard Realtek NIC

Why the driver disappears

Adding a module to boot.cfg on the installer ISO only tells the bootloader to load that file into RAM when the installer boots. That's enough for the installer to see your NIC.

It does not add the driver to the image profile the installer writes to disk. The installed system's boot banks get the stock module list, so on first boot from disk the driver simply isn't there.

The usual post-install fixes all assume you can get the .vib onto the host:

  • scp it over and esxcli software vib install. That needs a working NIC, which is the thing you don't have.
  • Copy it from a USB stick. That works until ESXi's USB storage stack doesn't cooperate (mine failed on every stick, every port).
  • Rebuild a proper image with PowerCLI ImageBuilder. That's painful on a Mac, and it wants an offline bundle ZIP, not the free ISO.

The key insight

When the installer boots with your custom module, the driver is sitting in the installer's ramdisk at /tardisks/ifre.v00. The freshly installed disk is mounted and writable before you reboot.

So you skip transferring the driver altogether. You copy it from the installer's memory onto the installed disk's boot banks, add it to their boot.cfg, and then reboot.

Credit to William Lam, who documents this approach for the free ESXi 8.0U3e ISO on his blog (link at the end).


Part 1: Build an installer ISO with the Realtek driver (macOS)

If you already have a working custom ISO, skip to Part 2.

1. Extract the driver payload from the VIB

A .vib is an ar archive. Unzip the Fling download, then extract the VIB:

cd VMware-Re-Driver_1.101.01-5vmw.800.1.0.20613240/vib20/if-re
ar -x vmw_bootbank_if-re_1.101.01-5vmw.800.1.0.20613240.vib
ls
# descriptor.xml  ifre  sig.pkcs7  vmw_bootbank_if-re_...vib

The file you want is ifre.

Gotcha: ar preserved a mode of 000 on that file, so even the owner can't read it and cp fails with "Permission denied":

ls -ld ifre
# ----------  1 cody  staff  221108 ... ifre

chmod 644 ifre
cp ifre ~/Desktop/ifre.v00

2. Copy the ISO contents somewhere writable

A mounted ISO is read-only, so copy the whole tree out:

mkdir -p ~/esxi-build
cp -R /Volumes/ESXI-8.0U3E-24677879-STANDARD/ ~/esxi-build/
cp ~/Desktop/ifre.v00 ~/esxi-build/IFRE.V00

3. Add the module to both boot.cfg files

There are two: one for legacy BIOS boot and one for UEFI. Edit both identically.

vim ~/esxi-build/BOOT.CFG
vim ~/esxi-build/EFI/BOOT/BOOT.CFG

Find the single long modules= line. Entries are lowercase, slash-prefixed, and separated by ---. Append the driver to the end:

modules=/b.b00 --- /jumpstrt.gz --- ... --- /nipmi.v00 --- /ifre.v00

Match the existing format exactly. On disk the file shows up as IFRE.V00 because ISO9660 uppercases filenames, the same as every other module, and that's expected.

4. Rebuild a bootable ISO

hdiutil can be finicky with BIOS+UEFI boot catalogs. xorriso is more reliable:

brew install xorriso

xorriso -as mkisofs \
  -relaxed-filenames -J -R \
  -o ~/Desktop/ESXi-8.0U3e-realtek.iso \
  -b ISOLINUX.BIN -c BOOT.CAT \
  -no-emul-boot -boot-load-size 4 -boot-info-table \
  -eltorito-alt-boot -e EFIBOOT.IMG -no-emul-boot \
  ~/esxi-build

To sanity-check it, mount the new ISO and confirm IFRE.V00 is in the root.

5. Write it to USB

diskutil list                      # find the stick, e.g. /dev/disk4
diskutil unmountDisk /dev/disk4
sudo dd if=~/Desktop/ESXi-8.0U3e-realtek.iso of=/dev/rdisk4 bs=1m

Use rdisk (the raw device) rather than disk. It's dramatically faster. Triple-check the disk number before you hit enter.


Part 2: The /tardisks fix (this is the part that matters)

1. Boot the custom installer and install normally

The NIC should show up during install. Pick your target disk and let it finish.

2. When it says "Installation Complete, press Enter to reboot," don't

Leave that screen alone.

3. Drop to the ESXi shell

Press Alt+F1 and log in as root. No password is set yet during install, so just press Enter at the password prompt.

4. Copy the driver from the installer's ramdisk to both boot banks

cp /tardisks/ifre.v00 /vmfs/volumes/BOOTBANK1/ifre.v00
cp /tardisks/ifre.v00 /vmfs/volumes/BOOTBANK2/ifre.v00

/tardisks/ifre.v00 is the driver the installer loaded at boot. You're persisting it onto the installed disk.

5. Add it to boot.cfg in each boot bank

vi /vmfs/volumes/BOOTBANK1/boot.cfg
vi /vmfs/volumes/BOOTBANK2/boot.cfg

Append --- ifre.v00 to the end of the modules= line in each file. Match whatever format the existing entries in that file use. The installed boot banks don't use the leading slash the ISO did.

6. Reboot

Press Alt+F2 to get back to the installer console and press Enter, or just run reboot from the shell.

The host comes up with the Realtek NIC present, the management network gets an address, and you can reach the Host Client. No USB, no PowerCLI, no network transfer required.


After it boots: make it official

The /tardisks trick gets the driver loading, but it's a hand-edited boot bank, not a registered VIB in the image profile. A future patch or upgrade can rewrite boot.cfg and drop it.

Now that you have a working network, close the loop properly:

# from your workstation
scp vmw_bootbank_if-re_1.101.01-5vmw.800.1.0.20613240.vib root@<esxi-host>:/tmp/

# on the host
esxcli software acceptance set --level=CommunitySupported
esxcli software vib install -v /tmp/vmw_bootbank_if-re_1.101.01-5vmw.800.1.0.20613240.vib

Before applying any ESXi update, confirm the driver is still listed with esxcli software vib list | grep if-re. Keep the VIB handy in case you need to reinstall it.

Rabbit holes I'd skip

  • PowerCLI ImageBuilder on macOS. You can get PowerShell Core and PowerCLI running with a Python venv, but Add-EsxSoftwareDepot won't take an ISO. It needs the offline bundle ZIP, which the free ISO route doesn't give you.
  • Toggling vmkusb to get USB storage working. On my box, disabling it also killed the USB keyboard, and recovering required a full reinstall.
  • SR-IOV on the Realtek NIC. The community if-re driver doesn't support it. If you need SR-IOV, you need a different NIC.

TL;DR

  1. Inject ifre.v00 into the installer ISO's boot.cfg files (both BIOS and EFI).
  2. Install ESXi, but don't reboot at the end.
  3. Press Alt+F1 and copy /tardisks/ifre.v00 to BOOTBANK1 and BOOTBANK2.
  4. Append --- ifre.v00 to modules= in both boot banks' boot.cfg, then reboot.
  5. Once networking works, install the VIB properly with esxcli so it survives updates.

References