VMware Cloud Community
patpat
Contributor
Contributor

PXE Installing ESXi on UEFI

Hi Guys

When PXE installing ESXi on BIOS or Legacy it is possible somehow deal with directories and avoid VMware

thinking that "owns" the PXE server and that "everything" is at the TFTP server root.

But when installing on UEFI BOOTX64.EFI is "hardcoded" to look for /BOOT.CFG at TFTP root and it cannot be changed.

For all of us dealing with multi-OS PXE environments would it be possible for you guys to code a BOOTX64.EFI
receiving the BOOT.CFG path in its command line? or just look at it at the same directory where BOOTX64.EFI was found?

Something similar happens with the modules loaded from BOOT.CFG they are also always considered at TFTP root,

probably just defining a PreFixDir variable on that file would make the PXE installs much more flexible than now.

If you guys are not interested on these things and the BOOTX64.EFI source is available just let me know.

Thanks

Best,

Patrick

0 Kudos
1 Reply
TimMann
VMware Employee
VMware Employee

There should be a way to achieve what you want to do. The following is mostly from memory since I want to answer this quickly and then go home for the weekend. Smiley Happy

First, see this new document: Installing VMware ESXi 6.0 Using PXE

I think mboot (which is "bootx64.efi" in the PXE case) should actually be looking for boot.cfg relative to where it was loaded from. So if the DHCP server tells the client that the filename to load is foo/bar/mboot64.efi, then I am pretty sure mboot will look for boot.cfg first in foo/bar/boot.cfg. If it's not found there, mboot will try /boot.cfg. It may make a difference whether the filename given out by the DHCP server starts with "/". If you have access to the logs from your TFTP server, watch to see what filenames mboot tries to access after being loaded.

Additionally, mboot does take a -c command line option saying where the boot.cfg file is. However, if you have your DHCP server telling the client that mboot is the filename to load, there is no way to pass a command line option to mboot. You could try using iPXE as the first file to load, then have iPXE chain into mboot. However, I (somewhat vaguely) remember there was an issue with the way iPXE passes options and you may find that the mboot from current ESXi releases can't recognize them.

The boot.cfg files we ship on our installer CD's annoyingly give all the filenames as absolute pathnames, but you can edit the file to change that. There is syntax to set up a common path prefix, but you also have to delete all the leading "/" characters from the filenames to make it work.

https://www.vmware.com/resources/techresources/10508 gives examples.

0 Kudos