PXE Boot Almost Any ISO Image

Over the past few years with the advent of low cost USB drives, CD Drives have basically become legacy devices. For that matter, most new computers don’t even have one. With that said, there are lots of tools we typically use that boot from CD and yes these tools can be made to boot from USB, however the purpose of this article is to detail the steps required to effectively boot any .iso over PXE. To preface this article, we are going to assume you’ve already read our article Enable PXE on Windows 2008 R2 or that you are fairly familiar with the PXE stack whether on Windows or Linux. For the purpose of this article we will boot Macrium Reflect 6.0 over PXE.

Note: this method does in fact work with Macrium Reflect Free available here. If you have not tried Macrium Reflect, I would highly recommend giving it a try as this is our new defacto imaging solution.
First thing you need to do is grab a copy of memdisk from the most recent syslinux package here. Next, you will want to generate the rescue.iso using the Macrium Reflect boot CD Creator. Once you have the required files you will want to place memdisk and rescue.iso in the same directory under your PXE root. Once the files are in the correct place, simply add the following entry to your default menu file of course changing the paths to reflect your environment.

Once everything is in place, network boot a machine and you should see that the .iso boots as if it were a CD.

Did you find this article useful? Why not share it with your friends?

12 thoughts on “PXE Boot Almost Any ISO Image

  1. I build an ISO from my LINUX MINT system using SystemBack and it boot up from an USB stick.

    I have a working PXE environment on my Synology NAS.
    Serveral Life DVD’s are bootable without any problem.
    Linux Mint ISO’s and HirenBootCD.

    I copied the ISO file to the same directory on the NAS where the others are sitting.
    The menu shows the entry for my Mint ISO.

    But when I choose it nothing happens. A short flash on the screen and it returns to the menu.

    How to trouble shoot this?

    Is a log file maybe somewhere?

    Regards, Wim

  2. @Girts In case this is still actual. You can find ldlinux.c32 with the following command

    sudo find / -type f -name ldlinux.c32

    if ldlinux.c32 is somewhere on your drives, then it will output the path of it.
    Then, knowing the path to ldlinux.c32 you can copy your servers tftp root (the same directory where pxelinux.0 is).
    For example the command could look like

    cp /path/to/ldlinux.c32 /path/to/tftp-root

    After this pxelinux.0 should be able to load ldlinux.c32 at boottime.

    cheers

  3. OK
    I figured it out
    I was using version 6
    =====

    Apparently this is due to a recent change in syslinux library modules. Not sure if its a bug Unetbootin can fix or any other package related bug.

    But the solution is simple.

    copy the below files from /usr/lib/syslinux/bios/ to the root of USB drive and then boot with the USB device.

    1. libcom32.c32

    2. menu.c32

    3. libutil.c32

    Thanks
    got the boot menu running!

      1. My goal is to enable booting from Live CDs/Bootable ISO images(tools, etc). I have PXE set up on a Windows Server(with SCCM on top of it). Can you give me hints regards absolute folder paths and file names referenced in your article?

          1. I am obviously missing something because I got the linux bootstrap starting and then it fails with:

            Failed to load ldlinux.c32
            I can understand why because there is no such file under TFTroot anywhere. Do I have to put entire distro under TFTroot somewhere?

          2. Start by using the version of gpxelinux.0 specified in the article. At some point they added requirements for other files, but off the top of my head I cant remember what version

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.