You can't boot/load an ISO file directly, at least, I wasn't able to figure out a way when I looked for it a bunch of years ago. However, you achieve the same effect using syslinux. I created a DOS/WinPE/FreeBSD/Linux/Memtest multiboot drive with syslinux.
Syslinux is a bootloader, like grub. The name is slightly confusing, it doesn't really have anything to do with Linux (the kernel or OS) as such, I believe the name stems from the fact that it was originally written to boot Linux, but it can boot pretty much anything.
I also needed to format my USB drive using
BOOTICE, I don't quite remember which options worked best, so you'll need to look that up or experiment. Some USB drives may also work out-of-the-box.
Using isolinux, you can also make a bootable CD/DVD with this, the only difference is that the config file is named /boot/isolinux/isolinux.cfg
It's been a few years since I did this, I believe there's been a major rewrite of syslinux, so this example might not work with the newer version, but it should give you an idea on how to proceed. Also, back then the FreeBSD port of syslinux was seriously broken, I don't know if this is still the case or if it's fixed.
Anyway, here's my config:
/boot/syslinux/syslinux.cfg
Code:
PROMPT 0
TIMEOUT 30
DEFAULT main
LABEL main
KERNEL /boot/syslinux/menu.c32
APPEND /boot/syslinux/menu.cfg
/boot/syslinux/menu.cfg
Code:
DEFAULT freedos
MENU TITLE Anduril 1.3
# MENU COLOR element ansi foreground background shadow
MENU COLOR TITLE 1;37;44
MENU COLOR TABMSG 37;40
MENU MARGIN 2
MENU ROWS 19
MENU TABMSGROW 25
MENU CMDLINEROW 25
MENU HELPMSGROW -1
label freedos
MENU LABEL ^1 FreeDOS
KERNEL /boot/syslinux/memdisk
APPEND initrd=/boot/freedos.gz
label freebsd
MENU LABEL ^2 FreeBSD
#KERNEL /boot/syslinux/mboot.c32
#APPEND /boot/freebsd/kernel --- /boot/freebsd/mfsroot.gz
KERNEL /boot/syslinux/memdisk
APPEND initrd=/boot/freebsd.gz harddisk raw
label parted
MENU LABEL ^3 Parted Magic 5.9
LINUX /boot/pmagic/bzImage
INITRD /boot/pmagic/initramfs
APPEND edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 loglevel=0 max_loop=256 keymap=us directory=/boot/
label win7pe
MENU LABEL ^4 Win7PE
#KERNEL /boot/loader.bin
KERNEL /boot/grub.exe
APPEND --config-file="chainloader /boot/BOOTMGR"
MENU SEPARATOR
label memtest
MENU LABEL ^5 Memtest86+ 4.20
KERNEL /boot/memtest
label memtest_probe
MENU LABEL ^6 Memtest86+ 4.00 Probe method (Might work if the default doesn't)
KERNEL /boot/memtest_probe
label hpmemtest
MENU LABEL ^7 HP Vision Diagnostics Memory Test 1.7
KERNEL /boot/syslinux/memdisk
APPEND initrd=/boot/hp_memtest.gz
# http://pciids.sourceforge.net/v2.2/pci.ids.gz
label hdt
MENU LABEL ^8 System Information (HDT)
TEXT HELP
ENDTEXT
KERNEL /boot/syslinux/hdt.c32
MENU SEPARATOR
LABEL hdd1
MENU LABEL ^9 Boot first hard disk
LOCALBOOT 0x81