# First we'll clone iPXE
$ git clone git://git.ipxe.org/ipxe.git
# Go into the src directory of the cloned git repo
$ cd ipxe/src
# Compile the UEFI iPXE executable
$ make bin-x86_64-efi/ipxe.efi# First we'll wipe the USB drive (THIS WILL DESTROY ALL DATA)
$ sudo dd if=/dev/zero of=/dev/sdxY bs=512 count=1
# Then we'll partition the drive
$ sudo cfdisk /dev/sdxY
# cfdisk will ask you what type of partition table you want, select GPT- Make a partition at least
512Min size. - Switch the type from
Linux FilesystemtoEFI system. - Write these changes to the USB drive and quit.
# First we'll format it FAT32
$ sudo mkfs.fat -F32 /dev/sdxY
# Now we'll make a directory to mount the USB drive in
$ mkdir /tmp/efidrive
# Now we can mount the USB drive
$ sudo mount /dev/sdxY /tmp/efidrive# Assuming you're still in the ipxe/src directory
# Make the necessary efi/boot directory in the USB drive
$ sudo mkdir -p /tmp/efidrive/efi/boot
# copy the executable and rename it to bootx64.efi to conform to the UEFI standard
$ sudo cp bin-x86_64-efi/ipxe.efi /tmp/efidrive/efi/boot/bootx64.efi
# unmount the drive
$ sudo umount /tmp/efidriveThat's it! You should now have a UEFI-bootable USB drive with the UEFI ipxe binary!
Yes, I named the binary wrong, sorry. I was working on a 32bit application earlier that day and had that in my head. I updated my comment's code snippet to be
bootx64.efi. And you're right, if it wasn't named correctly, you might have to rely on whether the UEFI system let you browse the filesystem to choose a file to boot from. But this trick has booted the iPXE uefi application automatically for me. I admit that I don't have the greatest exposure to various EFI systems, but since I picked up on this "trick", it's worked on every system I've tried it on.I don't have any relevant experience to help with sanboot. It's a little off topic here, but don't give up. I'm sure there's better resources out there for you to find.