# 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
512M
in size. - Switch the type from
Linux Filesystem
toEFI 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/efidrive
That's it! You should now have a UEFI-bootable USB drive with the UEFI ipxe binary!
@johnyradio On my OpenSUSE Tumbleweed system I have no issues compiling that Make target.
Could you: a) make a Gist/paste of the entire compilation output,
b) report the compiler version you're using - GCC, Clang, etc, and
c) post the iPXE Git commit you're building from.
You can find that commit ID from this command, which you should run in the iPXE Git folder:
git rev-parse HEAD
.Thanks!