iPXE discussion forum

Full Version: Bios ipxe ESXi 6.5d (free version)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
It's getting late, and I'm to the point where I don't know how to even ask a smart question. So forgive the sort of brain dump here, but it's all I've got.

I'm trying to follow this example. I know my hardware can boot ESXi because I can chain syslinux and COMBOOT the boot.c32; or I can simply syslinux-memdisk the 300MB iso. I'd rather not do either, and I'd rather not re-compile ipxe just to get COMBOOT. I'd much rather boot straight from my ipxe script. Here's what I have in my boot menu.
Code:
:esxi
set base-url http://${next-server}/esxi
kernel ${base-url}/tboot.b00 runweasel # ks=${base-url}/ks.cfg
module ${base-url}/b.b00
module ${base-url}/jumpstrt.gz
module ${base-url}/useropts.gz
module ${base-url}/features.gz
module ${base-url}/k.b00
module ${base-url}/chardevs.b00
module ${base-url}/a.b00
module ${base-url}/user.b00
module ${base-url}/uc_intel.b00
module ${base-url}/uc_amd.b00
module ${base-url}/sb.v00
module ${base-url}/s.v00
module ${base-url}/ata_liba.v00
module ${base-url}/ata_pata.v00
module ${base-url}/ata_pata.v01
module ${base-url}/ata_pata.v02
module ${base-url}/ata_pata.v03
module ${base-url}/ata_pata.v04
module ${base-url}/ata_pata.v05
module ${base-url}/ata_pata.v06
module ${base-url}/ata_pata.v07
module ${base-url}/block_cc.v00
module ${base-url}/char_ran.v00
module ${base-url}/ehci_ehc.v00
module ${base-url}/elxnet.v00
module ${base-url}/hid_hid.v00
module ${base-url}/i40en.v00
module ${base-url}/igbn.v00
module ${base-url}/ima_qla4.v00
module ${base-url}/ipmi_ipm.v00
module ${base-url}/ipmi_ipm.v01
module ${base-url}/ipmi_ipm.v02
module ${base-url}/ixgben.v00
module ${base-url}/lpfc.v00
module ${base-url}/lsi_mr3.v00
module ${base-url}/lsi_msgp.v00
module ${base-url}/lsi_msgp.v01
module ${base-url}/misc_cni.v00
module ${base-url}/misc_dri.v00
module ${base-url}/mtip32xx.v00
module ${base-url}/ne1000.v00
module ${base-url}/nenic.v00
module ${base-url}/net_bnx2.v00
module ${base-url}/net_bnx2.v01
module ${base-url}/net_cdc_.v00
module ${base-url}/net_cnic.v00
module ${base-url}/net_e100.v00
module ${base-url}/net_e100.v01
module ${base-url}/net_enic.v00
module ${base-url}/net_fcoe.v00
module ${base-url}/net_forc.v00
module ${base-url}/net_igb.v00
module ${base-url}/net_ixgb.v00
module ${base-url}/net_libf.v00
module ${base-url}/net_mlx4.v00
module ${base-url}/net_mlx4.v01
module ${base-url}/net_nx_n.v00
module ${base-url}/net_tg3.v00
module ${base-url}/net_usbn.v00
module ${base-url}/net_vmxn.v00
module ${base-url}/nhpsa.v00
module ${base-url}/nmlx4_co.v00
module ${base-url}/nmlx4_en.v00
module ${base-url}/nmlx4_rd.v00
module ${base-url}/nmlx5_co.v00
module ${base-url}/ntg3.v00
module ${base-url}/nvme.v00
module ${base-url}/nvmxnet3.v00
module ${base-url}/ohci_usb.v00
module ${base-url}/pvscsi.v00
module ${base-url}/qedentv.v00
module ${base-url}/qfle3.v00
module ${base-url}/qflge.v00
module ${base-url}/qlnative.v00
module ${base-url}/sata_ahc.v00
module ${base-url}/sata_ata.v00
module ${base-url}/sata_sat.v00
module ${base-url}/sata_sat.v01
module ${base-url}/sata_sat.v02
module ${base-url}/sata_sat.v03
module ${base-url}/sata_sat.v04
module ${base-url}/scsi_aac.v00
module ${base-url}/scsi_adp.v00
module ${base-url}/scsi_aic.v00
module ${base-url}/scsi_bnx.v00
module ${base-url}/scsi_bnx.v01
module ${base-url}/scsi_fni.v00
module ${base-url}/scsi_hps.v00
module ${base-url}/scsi_ips.v00
module ${base-url}/scsi_isc.v00
module ${base-url}/scsi_lib.v00
module ${base-url}/scsi_meg.v00
module ${base-url}/scsi_meg.v01
module ${base-url}/scsi_meg.v02
module ${base-url}/scsi_mpt.v00
module ${base-url}/scsi_mpt.v01
module ${base-url}/scsi_mpt.v02
module ${base-url}/scsi_qla.v00
module ${base-url}/shim_isc.v00
module ${base-url}/shim_isc.v01
module ${base-url}/shim_lib.v00
module ${base-url}/shim_lib.v01
module ${base-url}/shim_lib.v02
module ${base-url}/shim_lib.v03
module ${base-url}/shim_lib.v04
module ${base-url}/shim_lib.v05
module ${base-url}/shim_vmk.v00
module ${base-url}/shim_vmk.v01
module ${base-url}/shim_vmk.v02
module ${base-url}/uhci_usb.v00
module ${base-url}/usb_stor.v00
module ${base-url}/usbcore_.v00
module ${base-url}/vmkata.v00
module ${base-url}/vmkplexe.v00
module ${base-url}/vmkusb.v00
module ${base-url}/vmw_ahci.v00
module ${base-url}/xhci_xhc.v00
module ${base-url}/emulex_e.v00
module ${base-url}/weaselin.t00
module ${base-url}/esx_dvfi.v00
module ${base-url}/esx_ui.v00
module ${base-url}/lsu_hp_h.v00
module ${base-url}/lsu_lsi_.v00
module ${base-url}/lsu_lsi_.v01
module ${base-url}/lsu_lsi_.v02
module ${base-url}/lsu_lsi_.v03
module ${base-url}/native_m.v00
module ${base-url}/rste.v00
module ${base-url}/vmware_e.v00
module ${base-url}/vsan.v00
module ${base-url}/vsanheal.v00
module ${base-url}/vsanmgmt.v00
module ${base-url}/tools.t00
module ${base-url}/xorg.v00
module ${base-url}/imgdb.tgz
module ${base-url}/imgpayld.tgz
boot || shell

It's long, but from what I can tell it's exactly what the COMBOOT mboot.c32 + boot.cfg files are doing. For reference, here's the boot.cfg straight off the iso.
Code:
bootstate=0
title=Loading ESXi installer
timeout=5
kernel=/tboot.b00
kernelopt=runweasel
modules=/b.b00 --- /jumpstrt.gz --- /useropts.gz --- /features.gz --- /k.b00 --- /chardevs.b00 --- /a.b00 --- /user.b00 --- /uc_intel.b00 --- /uc_amd.b00 --- /sb.v00 --- /s.v00 --- /ata_liba.v00 --- /ata_pata.v00 --- /ata_pata.v01 --- /ata_pata.v02 --- /ata_pata.v03 --- /ata_pata.v04 --- /ata_pata.v05 --- /ata_pata.v06 --- /ata_pata.v07 --- /block_cc.v00 --- /char_ran.v00 --- /ehci_ehc.v00 --- /elxnet.v00 --- /hid_hid.v00 --- /i40en.v00 --- /igbn.v00 --- /ima_qla4.v00 --- /ipmi_ipm.v00 --- /ipmi_ipm.v01 --- /ipmi_ipm.v02 --- /ixgben.v00 --- /lpfc.v00 --- /lsi_mr3.v00 --- /lsi_msgp.v00 --- /lsi_msgp.v01 --- /misc_cni.v00 --- /misc_dri.v00 --- /mtip32xx.v00 --- /ne1000.v00 --- /nenic.v00 --- /net_bnx2.v00 --- /net_bnx2.v01 --- /net_cdc_.v00 --- /net_cnic.v00 --- /net_e100.v00 --- /net_e100.v01 --- /net_enic.v00 --- /net_fcoe.v00 --- /net_forc.v00 --- /net_igb.v00 --- /net_ixgb.v00 --- /net_libf.v00 --- /net_mlx4.v00 --- /net_mlx4.v01 --- /net_nx_n.v00 --- /net_tg3.v00 --- /net_usbn.v00 --- /net_vmxn.v00 --- /nhpsa.v00 --- /nmlx4_co.v00 --- /nmlx4_en.v00 --- /nmlx4_rd.v00 --- /nmlx5_co.v00 --- /ntg3.v00 --- /nvme.v00 --- /nvmxnet3.v00 --- /ohci_usb.v00 --- /pvscsi.v00 --- /qedentv.v00 --- /qfle3.v00 --- /qflge.v00 --- /qlnative.v00 --- /sata_ahc.v00 --- /sata_ata.v00 --- /sata_sat.v00 --- /sata_sat.v01 --- /sata_sat.v02 --- /sata_sat.v03 --- /sata_sat.v04 --- /scsi_aac.v00 --- /scsi_adp.v00 --- /scsi_aic.v00 --- /scsi_bnx.v00 --- /scsi_bnx.v01 --- /scsi_fni.v00 --- /scsi_hps.v00 --- /scsi_ips.v00 --- /scsi_isc.v00 --- /scsi_lib.v00 --- /scsi_meg.v00 --- /scsi_meg.v01 --- /scsi_meg.v02 --- /scsi_mpt.v00 --- /scsi_mpt.v01 --- /scsi_mpt.v02 --- /scsi_qla.v00 --- /shim_isc.v00 --- /shim_isc.v01 --- /shim_lib.v00 --- /shim_lib.v01 --- /shim_lib.v02 --- /shim_lib.v03 --- /shim_lib.v04 --- /shim_lib.v05 --- /shim_vmk.v00 --- /shim_vmk.v01 --- /shim_vmk.v02 --- /uhci_usb.v00 --- /usb_stor.v00 --- /usbcore_.v00 --- /vmkata.v00 --- /vmkplexe.v00 --- /vmkusb.v00 --- /vmw_ahci.v00 --- /xhci_xhc.v00 --- /emulex_e.v00 --- /weaselin.t00 --- /esx_dvfi.v00 --- /esx_ui.v00 --- /lsu_hp_h.v00 --- /lsu_lsi_.v00 --- /lsu_lsi_.v01 --- /lsu_lsi_.v02 --- /lsu_lsi_.v03 --- /native_m.v00 --- /rste.v00 --- /vmware_e.v00 --- /vsan.v00 --- /vsanheal.v00 --- /vsanmgmt.v00 --- /tools.t00 --- /xorg.v00 --- /imgdb.tgz --- /imgpayld.tgz
build=
updated=0

Do I need all of these files? Or can I smartly, carefully, trim down the required modules?
It seems like every file is a gzip archive. Does the filename of the module matter? Does the ordering matter?

If I gunzip and rename every file (ie: "raw.tboot.b00"), I get an error that isn't quite a PSOD, and drops me to a debugger. That seems like less progress than if I gunzip every file in-place (or if I only gunzip tboot.b00, k.b00, and b.b00) I get to a PSOD that says "Could not mount /dev: Not found".

Anything you can add would be helpful. I've been tinkering at this for a few hours, and I'm to the point where I feel like I'm grasping at straws.
Here's my iPXE ESXi BIOS script...

Code:
#!ipxe

kernel ${boot-url}/path/to/mboot.c32 -c ${boot-url}/path/to/boot.cfg
boot

iPXE ESXi EFI script...

Code:
#!ipxe

kernel ${server-url}/path/to/bootx64.efi -c ${server-url}/path/to/boot.cfg
boot

My boot.cfg (only need to modify the prefix line):

Code:
bootstate=0
title=Loading ESXi installer
timeout=5
prefix=http://server.example.com/esxi/esxi-6.5
kernel=tboot.b00
kernelopt=runweasel
modules=b.b00 --- jumpstrt.gz --- useropts.gz --- k.b00 --- chardevs.b00 --- a.b00 --- user.b00 --- uc_intel.b00 --- uc_amd.b00 --- sb.v00 --- s.v00 --- mtip32xx.v00 --- ata_pata.v00 --- ata_pata.v01 --- ata_pata.v02 --- ata_pata.v03 --- ata_pata.v04 --- ata_pata.v05 --- ata_pata.v06 --- ata_pata.v07 --- block_cc.v00 --- ehci_ehc.v00 --- elxnet.v00 --- emulex_e.v00 --- weaselin.t00 --- esx_dvfi.v00 --- esx_ui.v00 --- ima_qla4.v00 --- ipmi_ipm.v00 --- ipmi_ipm.v01 --- ipmi_ipm.v02 --- lpfc.v00 --- lsi_mr3.v00 --- lsi_msgp.v00 --- lsu_hp_h.v00 --- lsu_lsi_.v00 --- lsu_lsi_.v01 --- lsu_lsi_.v02 --- lsu_lsi_.v03 --- lsu_lsi_.v04 --- misc_cni.v00 --- misc_dri.v00 --- net_bnx2.v00 --- net_bnx2.v01 --- net_cnic.v00 --- net_e100.v00 --- net_e100.v01 --- net_enic.v00 --- net_forc.v00 --- net_igb.v00 --- net_ixgb.v00 --- net_mlx4.v00 --- net_mlx4.v01 --- net_nx_n.v00 --- net_tg3.v00 --- net_vmxn.v00 --- nmlx4_co.v00 --- nmlx4_en.v00 --- nmlx4_rd.v00 --- nvme.v00 --- ohci_usb.v00 --- qlnative.v00 --- rste.v00 --- sata_ahc.v00 --- sata_ata.v00 --- sata_sat.v00 --- sata_sat.v01 --- sata_sat.v02 --- sata_sat.v03 --- sata_sat.v04 --- scsi_aac.v00 --- scsi_adp.v00 --- scsi_aic.v00 --- scsi_bnx.v00 --- scsi_bnx.v01 --- scsi_fni.v00 --- scsi_hps.v00 --- scsi_ips.v00 --- scsi_meg.v00 --- scsi_meg.v01 --- scsi_meg.v02 --- scsi_mpt.v00 --- scsi_mpt.v01 --- scsi_mpt.v02 --- scsi_qla.v00 --- uhci_usb.v00 --- vsan.v00 --- vsanheal.v00 --- vsanmgmt.v00 --- xhci_xhc.v00 --- tools.t00 --- xorg.v00 --- imgdb.tgz --- imgpayld.tgz
build=
updated=0

Enjoy Smile
For BIOS booting iPXE and ESXi, I had to recompile for COMBOOT.
For EFI, I needed to use snponly.efi.
This looks somewhat similar to this thread
forum.ipxe.org/showthread.php?tid=8164&pid=12930

Looks like some versions of hardware just do not want to load esxi installer from ipxe.
@kai4785, did you get a chance to get this working?
Reference URL's