This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
appnote:uefihttp [2015/10/07 00:20] mcb30 |
appnote:uefihttp [2015/10/07 00:24] mcb30 |
||
---|---|---|---|
Line 6: | Line 6: | ||
UEFI HTTP chainloading provides a way to load iPXE on systems which do not have iPXE present as part of the UEFI firmware. If your system already provides iPXE as part of the UEFI firmware, then you do not need to use UEFI HTTP chainloading. | UEFI HTTP chainloading provides a way to load iPXE on systems which do not have iPXE present as part of the UEFI firmware. If your system already provides iPXE as part of the UEFI firmware, then you do not need to use UEFI HTTP chainloading. | ||
- | |||
- | {{ :clipart:chain.jpeg?200x96|A chain}} | ||
===== Configuring the DHCP server ===== | ===== Configuring the DHCP server ===== | ||
+ | |||
+ | {{ :clipart:chain.jpeg?200x96|A chain}} | ||
You must configure your DHCP server to check for a UEFI HTTP Boot client, and to provide the string ''HTTPClient'' as the vendor class identifier, and an HTTP URI as the boot filename. If you are using [[:howto:dhcpd|ISC dhcpd]] then you need to edit ''/etc/dhcpd.conf'' to contain | You must configure your DHCP server to check for a UEFI HTTP Boot client, and to provide the string ''HTTPClient'' as the vendor class identifier, and an HTTP URI as the boot filename. If you are using [[:howto:dhcpd|ISC dhcpd]] then you need to edit ''/etc/dhcpd.conf'' to contain | ||
Line 24: | Line 24: | ||
===== Configuring the web server ===== | ===== Configuring the web server ===== | ||
- | Place your iPXE binary (e.g. [[http://boot.ipxe.org/ipxe.efi|ipxe.efi]]) on your web server, along with an iPXE [[:scripting|script]] containing the commands needed to boot the operating system. For example, to boot a system comprising a Linux kernel and initial ramdisk, your script could contain | + | Place your iPXE binary (e.g. [[http://boot.ipxe.org/ipxe.efi|ipxe.efi]]) on your web server, along with an iPXE [[:scripting|script]] containing the commands needed to boot your operating system. For example, to boot a system comprising a Linux kernel and initial ramdisk, your script could contain |
#!ipxe | #!ipxe | ||
- | kernel vmlinuz initrd=initrd.img | + | kernel http://my.web.server/boot/vmlinuz initrd=initrd.img |
- | initrd initrd.img | + | initrd http://my.web.server/boot/initrd.img |
boot | boot | ||
Line 55: | Line 55: | ||
==== Building OVMF ==== | ==== Building OVMF ==== | ||
- | You can build an OVMF image (for virtual machines such as qemu and kvm) which supports UEFI HTTP Boot. You will need to enable the option | + | You can build an OVMF image (for virtual machines such as qemu and kvm) which supports UEFI HTTP Boot. You will need to edit the build description file ''OvmfPkg/OvmfPkgX64.dsc'' to enable the option |
DEFINE HTTP_BOOT_ENABLE = TRUE | DEFINE HTTP_BOOT_ENABLE = TRUE | ||
- | |||
- | in the build description file ''OvmfPkg/OvmfPkgX64.dsc''. | ||
For OVMF (or any other firmware built from upstream EDK2), the UEFI HTTP Boot option will show up as **EFI Network 1** within the boot selection menu. | For OVMF (or any other firmware built from upstream EDK2), the UEFI HTTP Boot option will show up as **EFI Network 1** within the boot selection menu. | ||