A.K.A. "Format a USB Flash Drive to Boot the ESXi Installation or Upgrade"
I got new hard drives for my home server and decided that it is a good time to update ESXi to version 6.7. The question came up: how to make a bootable USB stick with ESXi 6.7 iso image on Linux?
There is no Windows PC at home. I don't have a Mac either. Luckily, VMWare prepared a doc about the topic - it is a part of ESXi 6.7 User Guide. My happiness didn't last for long. I followed the steps: created FAT32 partition, marked it bootable, installed syslinux and copied files, moved and updated syslinux.cfg. But it didn't work.
Apparently, VMWare 6.7 ISO image is not compatible with current syslinux used by Ubuntu 18.04:
Let's try with syslinux 3.86:
1. Download syslinux-3.86 archive from here and unpack it.
2. If you've never done any development on your ubuntu machine, you may require to install multiple packages such as (maybe you will need something else as well):
6. Follow other steps as usual and you should be able to boot from the USB stick.
I got new hard drives for my home server and decided that it is a good time to update ESXi to version 6.7. The question came up: how to make a bootable USB stick with ESXi 6.7 iso image on Linux?
There is no Windows PC at home. I don't have a Mac either. Luckily, VMWare prepared a doc about the topic - it is a part of ESXi 6.7 User Guide. My happiness didn't last for long. I followed the steps: created FAT32 partition, marked it bootable, installed syslinux and copied files, moved and updated syslinux.cfg. But it didn't work.
Apparently, VMWare 6.7 ISO image is not compatible with current syslinux used by Ubuntu 18.04:
syslinux -vWhen I tried to boot the server from USB stick I started to see all kinds of error messages like:
syslinux 6.03 Copyright 1994-2014 H. Peter Anvin et al
Failed to load COM32 file menu.c32I even tried to copy syslinux files as recommended here. But it didn't help. Then I tried some other options and got another error:
Loading -c... failed! No files found!"The problem is clear. When I compared the steps for ESXi 5.1 and 6.7 - I found a difference. In 5.1 VMWare clearly states that they're using syslinux 3.86:
Verify that the machine opn which you are performing this procedure has access to syslinux version 3.86. This procedure requires syslinux version 3.86.
Let's try with syslinux 3.86:
1. Download syslinux-3.86 archive from here and unpack it.
2. If you've never done any development on your ubuntu machine, you may require to install multiple packages such as (maybe you will need something else as well):
sudo apt install nasm build-essential uuid-dev3. When you're done installing dependencies, compile the installer:
~/Downloads/syslinux-3.86$ make installer4. If everything goes fine, you're ready to install syslinux 3.86 binary on your ESXi USB stick. I'm assuming your USB stick device is /dev/sdb1. If you follow the steps in official VMware ESXi 6.7 documentation then you have to adjust step 4. In the manual you have this:
/usr/bin/syslinux /dev/sdb1Assuming, you have your syslinux-3.86 source code located in ~/Downloads/syslinux-3.86, do the following:
cat /usr/lib/syslinux/mbr/mbr.bin > /dev/sdb
cd ~/Downloads/syslinux-3.865. In step 9 official manual recommends to add "-p 1" to APPEND line in syslinux.cfg. SKIP this step.
mtools/syslinux /dev/sdb1
cat mbr/mbr.bin > /dev/sdb
6. Follow other steps as usual and you should be able to boot from the USB stick.
Thanks a lot!!!
ReplyDeleteYou saved my day!
Works fine
I really appreciate your sharing this! It worked like a champ for me.
ReplyDeleteyou saved my buns good sir. I dont remember making bootable esxi USBs this difficult in the past. must be getting old.
ReplyDeleteWorked like a champ. Thanks!
ReplyDeleteThanks
ReplyDeleteWorked perfectly for me. Thanks a lot for sharing!
ReplyDeleteWorks for ESXi 7 as well. Thank you, computer man!
ReplyDelete