VMware Cloud Community
4nub1s
Contributor
Contributor

ESXi 6.7 U3 installation from PXE server using iPXE

Hello everyone,

I'm currently in the process of setting up a PXE server for installation of multiple linux distrons including ESXi 6.7. The server is set up to serve Legacy as well as UEFI installations.

Thanks to multiple guides I could find on the internet, including vmware.com, I could set up the server and the ESXi Legacy installation runs fine. However, there are 2 issues, I simply cannot find an answer for:

Legacy Boot:

Everytime I load the mboot.c32 I receive the message "Network Boot: MAC address not found. Add 'BOOTIF= ... Replace with MAC address of the boot interface"

Since the the server is meant to install the OS on always different host machines, which MAC address am I supposed to provide here and how? Or can this message be disregarded? Is there a way to mask the message entirely?

This is the code in the ipxe boot menu for legacy boot:

:esxi67vm

echo Starting VMWare ESXi 6.7 Installation

dhcp

kernel -n mboot.c32 http://${server}/vmware/esxi67/mboot.c32

imgargs mboot.c32 -c http://${server}/vmware/esxi67/boot.cfg

boot mboot.c32 || goto failed

UEFI Boot:

Booting the installer works fine but always hangs in the last step with the message : Shutting own firmware services... Using 'simple offset' UEFI RTS mapping policy

Is there something I'm missing?

This is the code in the ipxe boot menu for uefi boot:

:esxi67vm

echo Starting VMWare ESXi 6.7 Installation

dhcp

kernel -n mboot.efi http://${server}/vmware/esxi67/mboot.efi

imgargs mboot.efi -c http://${server}/vmware/esxi67/boot.cfg

boot mboot.efi || goto failed

Best Regards

6 Replies
dariusd
VMware Employee
VMware Employee

For BIOS boot:

Peeking at the mboot source code here, there is a comment explaining that gPXE can not provide the bootloader with the identity of the boot NIC unless gPXE was itself launched from pxelinux.  Since iPXE is derived from gPXE, it is likely to share the same constraint.  If you're not already launching iPXE via pxelinux, perhaps give that a try, and/or try with the latest version of iPXE and pxelinux (if you're not already doing so).

The MAC address required is the that of the local (client machine) interface which has performed DHCP; Without that MAC address, the booting ESXi instance has no way of knowing which NIC the system booted from.

For EFI boot:

First step would be to see if you can examine the host's disk/network activity to see whether ESXi has actually locked up at that point or has just stopped updating the screen.  I have seen several cases where ESXi has gone ahead and booted, but the display has frozen at exactly this point due to some quirk of the host's EFI firmware.

If in doubt, give the host a while to "boot" with the screen not changing, then follow the usual ESXi console shutdown procedure: <F12>, <Enter>, type the root password and <Enter>, then press <F2> to shut down the host.  Wait another few minutes, and see if the host powers itself off.

Thanks,

--

Darius

4nub1s
Contributor
Contributor

Hi dariusd,

thanks for the reply. I managed to fix the MAC problem during Legacy Boot. It was actually a lot easier than I imagined. Just add "BOOTIF=01-${mac}" to imgargs and everything is fine.

Sadly, I couldn't fix the issue with EFI boot however. The system completely freezes with the aforementioned message displayed. The installer doesn't even start in the first place and I cannot change to a different console either. Tried with different Mainboards (Supermicro, Asus) and always receive the same issue.

PXE Boot -> Load Files -> Freeze (Shuttding down firmware services...)

There's another weird phenomenon during file loading. I get multiple keyboard error message but a known working keyboard is connected.

Best Regards

0 Kudos
dariusd
VMware Employee
VMware Employee

Nice work on the BIOS-boot fix!

Does your EFI-boot configuration use another bootloader to chain-load mboot?  If so, can you test without that other bootloader – just directly load mboot – to see if that works?  I have recently received another report of trouble using another bootloader to chain to mboot, and I'm interested to see if your situation is the same.

--

Darius

0 Kudos
4nub1s
Contributor
Contributor

Thanks Smiley Happy

Yeah, I'm currently chaining from ipxe.efi to mboot.efi since it's configured as a multiboot environment.

If I hand out mboot.efi directly via DHCP/TFTP combo, everythings works fine. This combination is of course viable, but would require either a secondary network or vlan configuration which I'd rather not use.

I compiled ipxe.efi directly from the source code on github. I'm not sure yet whether it's just a missing configuration or an incompatibility/bug.

Best Regards

0 Kudos
jameshyde2012
Contributor
Contributor

I am hitting the exact same issue (keyboard error), on Dell hardware, ipxe -> mboot -> esxi 6.7u3.

any workaround on this one?

0 Kudos
BootRecord
Contributor
Contributor

I ran into the same problem a couple weeks ago while I was doing a project for my final exams. The only way to set it up that worked for me was abusing sanboot to boot straight from the ISO file. https://ipxe.org/cmd/sanboot

So your boot script would look something like this.

:esxi67vm

echo Starting VMWare ESXi 6.7 Installation

dhcp

sanboot http://${server}/vmware/esxi67/esxi67.iso

It should pick between UEFI and Legacy automatically.