Install ESXi 4.1 from a USB stick

Depending on your environment you may find the ability to install ESXi from a USB stick, particularly if you do not have access to a PXE based deployment solution.

With ESXi 4.0 I had used a USB stick with the install ISO on the stick. Whilst starting to test 4.1 I thought it would be a simple case of replacing the 4.0 ISO with 4.1. However, when I did this I was able to boot to the install, but when it got to the part of copying the files I received the error:

“Unable to find the system image to install. This is due to the image not being mounted correctly, or the CD-Rom drive not supported”

A bit of googling revealed that there seems to be a change between 4.0 and 4.1 where the install is hard-coded to look for the files on the CD-Rom drive. Consequently it looks like you need to take a slightly different approach and use the new Scripted Install feature of ESXi in 4.1

So this post will detail the three steps you need to take to get this working:

  • Creating the bootable USB stick including the installation files
  • Adding the Kickstart script
  • Add a custom mod.tgz file

Creating the bootable USB stick including the installation files

There are many posts on the web detailing how to create a bootable USB stick with syslinux. One I have found particularly useful for this scenario is UNetbootin. This is a GUI based tool that allows you to create bootable USB drives for Ubuntu, Fedora and other Linux distributions by pointing the tool at the install ISO and hitting Go! I found this from Daniel Buonocore’s post over at blogs.vmpros.nl

Download the execuatble from UNetbootin and point it at the ESXi 4.1 ISO file.

Hit OK and the creation will begin:

You will be prompted to overwrite the file menu.c32 , answer Yes that you wish to do this.

This part is then complete. There is no need to reboot :-)

Adding the Kickstart script

As mentioned earlier we need to specify that the ESXi install files are not on the CD-Rom; we do this by modifying the syslinux.cfg file to include a reference to a Kickstart file on the USB stick. So modify syslinux.cfg to include ks=usb to the append line. Whilst we are here also add - - -  mod.tgz at the end of the same line - more on this in the next section. The resulting file will now look like this:


default menu.c32 menu title VMware VMvisor Boot Menu timeout 80

label ESXi Installer menu label ^ESXi Installer kernel mboot.c32 append vmkboot.gz ks=usb --- vmkernel.gz --- sys.vgz --- cim.vgz --- ienviron.vgz --- install.vgz --- mod.tgz

label ^Boot from local disk menu label ^Boot from local disk localboot 0x80

We now need to add a Kickstart script to the USB stick. The ESXi Installable and vCenter Server Setup Guide for 4.1 contains details of the options for this file. For my very simple requirements I have used the following to create a ks.cfg file:


vmaccepteula rootpw password autopart --firstdisk --overwritevmfs install usb network --bootproto=dhcp --device=vmnic0

Add a custom mod.tgz file

At this point you are pretty much there, however if you boot of the stick now you will get the following error on the console constantly repeating:

Total number of sectors not a multiple of sectors per track! Add mtools_skip_check=1 to your .mtoolsrc file to skip this test

It is possible to temporarily get round this via the following method detailed in the VMware communites:

ALT + F1

Log in (root + no password)

echo “mtools_skip_check=1” >> .mtoolsrc

ALT + F2 to return to original Console window

Press Enter or wait to continue

However, you don’t really want to have to do that everytime. So very helpfully Ivo Beerens over at ivobeerens.nl has created a custom mod.tgz file which will automate this part for us.

Download the mod.tgz file and copy it to the USB stick. (Make sure you have modified the syslinux.cfg file as mentioned earlier in this post to reference the mod.tgz file)

The contents of the USB stick should now look like:

The USB stick is now complete and ready to be boot from. The following three posts were highly useful in helping put this USB stick together.

Update 18/02/2001:

The release notes of ESXi 4.1 U1 contain details of the above issue where the additional mod.tgz file is required:

Unable to install ESXi 4.1 using scripted installation from a USB drive When you try to install ESXi 4.1 by using script saved on a USB drive or if the installation media is on a USB drive, the ESXi 4.1 installation stops and displays the following message: Total number of sectors not a multiple of sectors per track! Add mtools_skip_check=1 to your .mtoolsrc file to skip this test. The issue is resolved in this release.

I tested this and it works fine, so the mod.tgz file is no longer required. Don’t forget to update your syslinux.cfg file to remove the reference to -- mod.tgz .