Configure Advanced Bootloader and Kernel Options

You can perform an unattended installation or upgrade of an ESXi host by using scripts. To do so, you need a kickstart file, which can either be included in the ESXi image, or accessed by configuring the boot options of the host during the install, or via PXE boot. The kickstart file/installation script is called ks.cfg, a default one can be found on the ESXi media.

Once you have created/modified a kickstart file with suitable settings for your environment, it needs to be placed where it can be reached by the host during install. You can call the kickstart file from any of the following locations:

  • FTP
  • HTTP/HTTPS
  • NFS Share
  • USB flash drive
  • CD/DVD device

Once you have your kickstart file in place, and accessible to your hosts, you need to edit the boot loader settings on the host in order to call the script. A example of the contents of a ks.cfg file would be:

#Sample kickstart scripted installation
vmaccepteula
rootpw VMware1!
install --firstdisk --overwritevmfs
network --bootproto=static --ip=192.168.0.88 --gateway=192.168.0.1 --nameserver=192.168.0.238 --netmask=255.255.255.0 --hostname=esxi5.vmlab.loc --device=vmnic0 --addvmportgroup=0
reboot

%firstboot --interpreter=busybox
# Rename local datastore name
vim-cmd hostsvc/datastore/rename datastore1 "$(hostname -s)-local-storage-1"
# DNS names
esxcli system hostname set --fqdn=esxi5.vmlab.local
esxcli network ip dns search add --domain=vmlab.local
# DNS server addresses
esxcli network ip dns server add --server=192.168.0.238
# SSH and ESXi shell
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell

You can then call the script by pressing SHIFT-0 when the installer starts:

You will then be presented with a prompt, where you can set the boot options referencing the ks.cfg file (which in this example I’ve placed on a web server):

ks=https://192.168.0.116/ks.cfg nameserver=192.168.0.238 ip=192.168.0.88 netmask=255.255.255.0 gateway=192.168.0.1

After hitting return, the installation will begin and the host will be configured with the settings defined in the ks.cfg script. Other boot loader options include (taken from VMware KB200582):

Boot Option Description
BOOTIF=<MAC address> Tries to use a network adapter device when looking for an installation script and installation media.
gateway=<ip address> Sets this network gateway as the default gateway
ip=<ip address> Sets up a static IP address to be used for downloading the installation script and the installation media.
ks=cdrom:/<path\> Performs a scripted installation with the script at path, which resides on the CD in the CD-ROM drive.
ks=file://<path> Performs a scripted installation with the script at path.
ks=protocol://<serverpath> Performs a scripted installation with a script located on the network at the given URL. Protocol can be HTTP, HTTPS, FTP, or NFS.
ks=usb:</path> Performs a scripted install, accessing the script from an attached USB drive. Searches for a file named ks.cfg.
nameserver=<ip address> Specifies a domain name server
netdevice=<device> Use network adapter device (MAC or vmnicN)
netmask=<subnet mask> Specifies subnet mask for the network interface
vlanid=<vlanid> Configure the network card to be on the specified VLAN
ksdevice=device Tries to use a network adapter device when looking for an installation script and installation media. Specify as a MAC address, for example, 00:50:56:C0:00:01. This location can also be a vmnicNN name. If not specified and files need to be retrieved over the network, the installer defaults to the first discovered network adapter that is plugged in.

There is a default ks.cfg script which can be found at /etc/vmware/weasel/ks.cfg. You can use this as the basis for your ks.cfg script if required.

Configuring ESXi Kernel Options

ESXi uses the  mboot.c32 boot loader during installation. The boot.cfg file contains the Kernel path, Kernel options and boot modules used by mboot.c32. The boot loader configuration file contains the following statements:

Command Description
title=STRING Sets the title of the boot loader.
kernel=FILEPATH Sets the kernel path.
kernelopt=STRING Adds options to the kernel. For example, you may specify the kickstart file location here.
modules=FILEPATH Lists the modules to be loaded

If you want to create a custom ESXi iso, you could do so, editing the ‘kernelopt’ string to point to an installation/ks script, which saves having to change the boot loader options.

Given a Scenario, Determine when to Customize a Configuration

There a few ways to install ESXi, both manually and automated. The options are:

  • Interactive Install
  • Scripted Install
  • vSphere Auto Deploy

The scripted install, I’ve touched on here, whilst I have written about Auto Deploy elsewhere on the site.

Generally speaking, if you have a small number of hosts to install, an interact installation is the best approach. If you have a larger number of hosts then it is worth spending the time looking at automating the installations.

Useful Links and Resources

https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2004582

 

Related posts

VMware vSphere Virtual Machine Snapshots Explained

How to Enable SSH on All ESXi Hosts using PowerCLI

How to Install VMware Tools on Debian 11

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Read More