PXE boot VMware ESXi 4.1 and Manual Install

an awesome new feature in the just released ESXi 4.1 is the ability to do PXE boot and script the install using a kick-start script. If you looking for information on how to do this see here at billhill’s post.

http://communities.vmware.com/blogs/vmwareinsmb/2010/07/13/esxi-41-scripted-installation-via-pxe-and-kickstart

However while adding that feature VMware seems have slightly broken the PXE boot, but manual install ability of ESXi. This is useful if you have lights-out lab and want to use the local pxe server instead of those virtual media options but also want to customize the install options as the lab servers do not havestandardized components and hardware and mayother issues.

Refer to the above link for overall PXE/dhcp/tftp install steps. I plan only to document what’s different for a manual install.

Here are the steps to do it. By the way, the key is in the weird named file imagedd.bz2 on the ESXi install cd.

-r--r--r-- 5 root root 13320 2010-05-18 16:48 a.z
-r--r--r-- 1 root root 2048 2010-05-18 17:21 boot.cat
-r--r--r-- 6 root root 1164618 2010-05-18 16:49 cimstg.tgz
-r--r--r-- 6 root root 16101197 2010-05-18 16:50 cim.vgz
-r--r--r-- 3 root root 7364186 2010-05-18 17:21 ienviron.vgz
-r--r--r-- 3 root root 212380054 2010-05-18 17:19 imagedd.bz2
-r--r--r-- 3 root root 74 2010-05-18 17:19 imagedd.md5
-r--r--r-- 2 root root 22887 2010-05-18 17:15 install.vgz
-r-xr-xr-x 1 root root 12241 2010-05-18 17:15 isolinux.bin
-r--r--r-- 1 root root 298 2010-05-18 17:15 isolinux.cfg
-r-xr-xr-x 1 root root 47404 2010-05-18 17:15 mboot.c32
-r-xr-xr-x 1 root root 51020 2010-05-18 17:15 menu.c32
-r--r--r-- 1 root root 1831459 2010-05-18 17:15 open_source_licenses.txt
-r--r--r-- 1 root root 2889 2010-05-18 17:15 README.txt
-r--r--r-- 5 root root 72206398 2010-05-18 17:15 sys.vgz
-r--r--r-- 5 root root 40876 2010-05-18 17:15 tboot.gz
-r--r--r-- 6 root root 48285 2010-05-18 17:15 vmkboot.gz
-r--r--r-- 5 root root 2469813 2010-05-18 17:15 vmkernel.gz

For the sake for posterity, just go ahead and copy all the above files to your tftp/pxeboot folder.

then rename the imagedd.bz file to VMware-VMvisor-big-260247-x86_64.dd.bz2
mv imagedd.bz2 VMware-VMvisor-big-260247-x86_64.dd.bz2

Create a folder structure that ESXi installer looks for the system file in
mkdir p usr/lib/vmware/installer/

Move the file to the correct location
mv VMware-VMvisor-big-260247-x86_64.dd.bz2 usr/lib/vmware/installer/

The installer is looking for a tar fgz file named image.tgz, so lets create one.
tar cvzf image.tgz usr/

Now that we have the file in the correct format and folder structure lets add it to the pxe append command.
append vmware/esx4.1/vmkboot.gz ks=http://192.168.163.48/ks.cfg --- vmware/esx4.1/vmkernel.gz --- vmware/esx4.1/sys.vgz --- vmware/esx4.1/cim.vgz --- vmware/esx4.1/ienviron.vgz --- vmware/esx4.1/install.vgz

From the above line remove the ks command and add the image.tgz at the end.
append vmware/esx4.1/vmkboot.gz --- vmware/esx4.1/vmkernel.gz --- vmware/esx4.1/sys.vgz --- vmware/esx4.1/cim.vgz --- vmware/esx4.1/ienviron.vgz --- vmware/esx4.1/install.vgz --- vmware/esx4.1/image.tgz

That’s it. Now bootup your server and enjoy the pxe boot bliss.

Update: Also its safe to delete the usr folder tree you created after creating the image.tgz, it is just sitting there taking up space, thanks raph 🙂

31 comments

  1. This would have saved my day, but I still get the same “unable to find the system image to install” error 🙁
    I checked for typos though.

    Where did you get the hint for the right filename? VMware-VMvisor-big-260247-x86_64.dd.bz2

    I’ll try again when I have more time, back to 4.0 for now.

    1. Well I got the clue from bunch of places:

      1. If you do tar xvzf on the image.tgz file for esxi4.0 you get this

      tar xvzf image.tgz
      usr/
      usr/lib/
      usr/lib/vmware/
      usr/lib/vmware/installer/
      usr/lib/vmware/installer/VMware-VMvisor-big-261974-x86_64.dd.bz2

      2. If you do cat imagedd.md5 on the esx

      cat imagedd.md5
      17e94a90a1b66c81d2f37718295b75c1 VMware-VMvisor-big-260247-x86_64.dd.bz2

      3. The install script in install.vgz is also specifically looking for a VMware-VMvisor-big-260247-x86_64.dd.bz2 file

      4. When you pass imagedd.bz2 as a append option to the pxe boot you can see an vmkernel error message which says not a tar file system.

      Looking at all the above I knew this is basically some installer change to accommodate ks which inadvertently broke the manual install image.tgz compatibility.

      I have worked with the installer team long enough to know, once they realize this is an issue they will try and fix it in the next upcoming release or two. So hoping that happens earlier than latter, until then we have the workaround 🙂

      1. I still cannot get this to work. Perhaps you can help me find my error. At boot, it loads the modules correctly, but when it SHOULD go to the yellow ESX screen it just stays on the black text screen. The last thing that shows up on the screen is ‘Booting: MBI=0x00010120, entry=0x0040024a’. When I try to boot to that same DVD iso it loads correctly and I get to the next step but not when using PXE. Also, when booting to the DVD, I get that same ‘Booting’ message–with the exact same codes, so I believe that ‘Booting’ message is normal and I know the hardware is good with this iso as well.

        Any ideas?

        1. From a comment in billhill’s original post looks like you have get rid of mem and ipappend from the options list. I know from previous experience mem option could casue such an issue but not sure about ipappend. you should try a couple of variations. let us know know how its goes.

          1. I encountered the same problem with you, and after check the isolinux.cfg included in the ESXi iso, i found that i wrote the wrong pxe append command, which is:
            append esxi/vmkboot.gz esxi/vmkernel.gz esxi/sys.vgz esxi/cim.vgz esxi/ienviron.vgz esxi/install.vgz esxi/image.tgz

            The right way to write this command is:
            append esxi/vmkboot.gz — esxi/vmkernel.gz — esxi/sys.vgz — esxi/cim.vgz — esxi/ienviron.vgz — esxi/install.vgz — esxi/image.tgz

            Notice that the “—” among the parameter CANNOT be erased! They are not “whitespace”.

            May this help you.

  2. Hold it, it’s working now 😀
    Apparently the rsync to the other PXE server wasn’t fully complete yet.
    Thanks!

  3. I have followed the article at http://communities.vmware.com/blogs/vmwareinsmb/2010/07/13/esxi-41-scripted-installation-via-pxe-and-kickstart and managed to get the PXE booting working to the point the imagedd.bz2 needs to be fetched from the http web server.

    The difference is that I am using the WIndows IIS6 webserver as my source repository, and I have RIS also configured to deliver the TFTP/PXE services and everything works perfectly as I use this configuration for deploying ESX servers.

    The issue I am having is after the vmkernel.gz — sys.vgz — cim.vgz — ienviron.vgz — install.vgz files have been copied successfully.

    I get the below message:

    File (http://192.168.1.151/deploy/esxi41-260247/imagedd.bz2) connection failed. Made 5 attempts. HTTP Error 404: Not Found.

    I have checked to make sure the imagedd.bz2 (200+MB) file is in the above location.

    I am wondering if this issue could be due to the MIME type, .* application\octet-stream and .pkl. this setting works fine for ESX but for some reason it is not able to fetch the imagedd.bz2

    Any ideas?

    Thanks

  4. Thanks for this info it helped me out. However, when I do cat imagedd.md5 I get 0b094039f326f28f0099350366764a7d VMware-VMvisor-big-4.1.0-260247-x86_64.dd.bz2. I am using an .iso provided by HP named 4.1_July_2010_ESXi_HD_USB_SD_Image_Installer_CD_583772_005.iso.

    Thanks
    Scott

    1. I think it would still, work, most probably HP modified the oem.tgz file to add their CIM drivers and other branding stuff, hence the change in md5sum and most probably the file size.

  5. Thanks for the tips – most useful. I can confirm that for the HP customised version to work, you need to call the file in image.tgz VMware-VMvisor-big-4.1.0-260247-x86_64.dd.bz2. The process then works fine with this change…

  6. Thx Jay for sharing this. I got it too work on my UDA since it did not before i found your post there are some minor changes you have to do to get it to work apart from the things you posted.
    Anyway thank you very much.

    Boris

    1. UDA is nice, I find myself recommending it to folks who are too scared to build out a pxe server from scratch, all the time.

      thanks for sharing the feedback 🙂

  7. It worked like a charm !
    Before I do the test my google search was imagedd.bz2. I found it was a strange filename too as it was not mentined in isolinux.cfg.
    You coul add it is safe to remove the usr/ tree just after it is packaged in image.tgz

    Many thanks.

  8. i get to the point where i create the image.tgz file using powerarchiver, the file seems to load via pxe, but then in get the booting error Booting: MBI=000010120, entry=0x0040024a described above after image.tgz loads , I am not clear on the command cat imagedd.md5 , so that I can check the validity of the filename I am using for the install image, I used the file name you provided in the documentation above.

    Thanks in Advance

  9. If you have the problem where the PXE gets stuck at ‘Booting: MBI=xxxxx’, then you’re using an old version of mboot.c32, probably 0.1 from RHEL. Use the 0.2 version from the ESXI install ISO. You can copy it over when you are copying over the .vgz files.

    Spent three hours figuring this out. Just happened to notice the version strings during PXE and when I booted the ISO.

    Steve

  10. I get:
    Module: vmware/esx4.1/image.tgz
    Loading vmware/esx4.1/imaget.tgz.
    Fatal: cannot open vmware/esx4.1/image.tgz

    Please help?

  11. Thank You.

    I did a cat imagedd.md5 to get the filename, which differs from yours. I renamed my imagedd.bz2 file to the name in the md5 file, then the failed error about the install image went away.

    With this simple tweak, your instructions worked like a charm.

      1. Could update your post to get the name that is used “VMware-VMvisor-big-260247-x86_64.dd.bz2” is found int he imagedd.md5 file?

        It looks like that file name probably changes with each updated version of ESXi.

        Other than that thank you very much for the directions!

  12. When using the above steps I get to where it loads the image.tgz and once the yellow install screen comes up I get the psod. It says boot image is corrupt. If I do not have install.tgz in the boot options, it runs through the install to where I select the disk and hit F11…it then states the image is corrupt. When making image.tgz does it have to be exactly like you mentioned? It seems that would tarball the entire usr directory and make for a HUGE file. PS, I am trying to do most of this on a windows box. I had a friend with a linux install copy over the file and just tar it.

    1. Hi drwoodberry,

      did you get the issue with the ‘Boot image is corrupted’ resolved.

      I’m currently getting this error.

      Thanks..
      Stu.

      1. I have got passed this error by recreating the image.tgz with a modaXterm session rather than 7-zip application.

        Its now passed the boot corrupt messange but now fails for ‘unable to find the system image to install.This is due to the image not being mounted correctly or the CD-ROM not being supported’

        Any ideas about this error?

        thanks..
        Stu.

Leave a Reply