Installing ESXi over serial console (headless, no video card)
I ran into a unique scenario where I had a server to install ESXi on that had no video card (maybe open compute style?). That being said, I figured that PXE installation would be the easiest method.
First lets look at the PXE installation method of installing ESXi…
- Server boots, grabs DHCP address then downloads and executes the PXE Linux kernel.
- PXE linux kernel then loads /tftpboot/pxelinux.cfg/default – this is the menu system for PXE linux.
- ESXi install is selected, at which a linux kernel runs and begins installing the ESXi kernel
- The linux boot kernel, calls weasel to start installing the ESXi system
- The system reboots and starts loading ESXi
That being said, I needed to make sure the that not only did I pass the correct redirect output to serial switches, but that I was setting the correct baud rate at all four steps.
Step 1:
I first made sure the BIOS Serial and Serial over LAN baud rate was 115200
Step 2:
Configure the /tftpboot/pxelinux.cfg/default menu to use serial at the 115200 baud rate:
default menu.c32 serial 0 115200 prompt 0 MENU TITLE Boot Menu Timeout 1000
Step 3:
Pass the correct kernel parameters to the ESXi installer menu option:
LABEL esxi50 KERNEL images/esx/mboot.c32 APPEND -c images/esx/boot.cfg text gdbPort=none logPort=none tty2Port=com1 MENU LABEL ESXi-5.0.0
Step 4:
Pass the correct kernel parameters to /tftpboot/images/esxi/boot.cfg for the ESXi installer to work correctly:
bootstate=0 title=Loading ESXi installer prefix=images/esx/ kernel=tboot.b00 kernelopt=runweasel text nofb com1_baud=115200 com1_Port=0x3f8 tty2Port=com1 gdbPort=none logPort=none modules=b.b00 --- useropts.gz --- k.b00 --- chardevs.b00 --- a.b00 --- user.b00 --- s.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 --- weaselin.t00 --- esx_dvfi.v00 --- xlibs.v00 --- ima_qla4.v00 --- ipmi_ipm.v00 --- ipmi_ipm.v01 --- ipmi_ipm.v02 --- misc_cni.v00 --- misc_dri.v00 --- net_be2n.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_nx_n.v00 --- net_r816.v00 --- net_r816.v01 --- net_s2io.v00 --- net_sky2.v00 --- net_tg3.v00 --- net_vmxn.v00 --- ohci_usb.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_fni.v00 --- scsi_hps.v00 --- scsi_ips.v00 --- scsi_lpf.v00 --- scsi_meg.v00 --- scsi_meg.v01 --- scsi_meg.v02 --- scsi_mpt.v00 --- scsi_mpt.v01 --- scsi_mpt.v02 --- scsi_qla.v00 --- scsi_qla.v01 --- scsi_rst.v00 --- uhci_usb.v00 --- tools.t00 --- xorg.v00 --- imgdb.tgz --- imgpayld.tgz build= updated=0s
Step 5:
Modify /bootbank/boot.cfg so that when the system reboots, the installed boot.cfg is passing the correct kernel parameters. I did this with a line in my Kickstart file:
sed -i '/no-auto-partition/ s/$/ text nofb com1_baud=115200 com1_Port=0x3f8 tty2Port=com1 gdbPort=none logPort=none/' /bootbank/boot.cfg
Tags: esxi, opencompute, pxe, quanta, windmill